Stream: contributing

Topic: projects


view this post on Zulip Brendan Hansknecht (Jan 01 2025 at 23:04):

Not that I know when I will work on these, but just listing a handful of projects that I think will be valuable and I will eventually work on. If others are interested in any of them, would be happy to guide anyone. This is probably a list I will slowly churn away on when I have time.

  1. Simplifying the llvm abi and cleaning up our c-abi in general. (I will probably start working on this soon) #compiler development > simplifying internal abi
  2. Finishing wiring up the dev backend such that it can be the default for use with roc main.roc. I think this is a matter of 1) filling in more missing functions and 2) adding the main wrapper functions to match the abi that llvm exposes. (might also need #compiler development > Dev Backend IR before it is reasonable to enable by default)
  3. Adding debug info to the elf surgical linker (no idea what it will take but will make the surgical linker way more generally useful).
  4. Maybe also looking at fixing the surgical linker absolute relocation pains...but maybe we can just avoid absolute relocations in builtins instead. I need to double check what actually generates these nowadays.
  5. Enabling proper atomic refcounting. I think this is mostly a matter of propagating the atomic flag when loading data from a list or from a tag union pointer. Besides that, it is adding a header to platforms to pick between atomic and normal refcounting. That will just set an llvm constant instead of setting the constant directly in the zig bitcode. Will be important for enabling more powerful multithreaded platforms. (note: just adding the platform field is likely pretty easy parsing work and still super valuable as a smaller project). (extra note: should propagate the constant state as well, that said constant can only propagate to unique or non-atomic data)

Just felt like listing these out partially for my own organization and partially in case anyone is interested in trying to tackle one of or part of one of these projects.

view this post on Zulip Brendan Hansknecht (Jan 02 2025 at 14:00):

Bonus project I missed yesterday:

  1. Roc glue revamp. Roc should expose tons of helper functions via c-abi. By doing this, glue will become many times simpler to implement. Glue will just need to know the data layout. All interacting functions, refcounting functions, calling of lambdas, and basic for interacting with builtins will be exposed. Will make platform development way easier.
  2. Finally rip out the old expect system. Update expect failing to be a platform effect. Make inline expect properly get removed in optimized builds.

view this post on Zulip Sam Mohr (Jan 02 2025 at 14:32):

We're lucky to have you working on Roc!


Last updated: Jul 05 2025 at 12:14 UTC