Just started using Odin this week, I’ve been wondering what features/fixes are being worked on currently and what are the plans for the language/toolchain in the future. Asking here as I could not find a roadmap or something similar (didn’t search much).
Replacing os with os2. One major blocker to this that I’m slowly overcoming.
Considering new data structures for inclusion into core after having read some interesting papers… If only I had more time.
Vectorizing memory operations. Have to get back to that PR one day.
core:archive/tar, currently way back in the queue.
The start of core:archive/tar led me down an Alice in Wonderland-class rabbit hole of all of the above, truly.
There’s a bit in the TAR spec where you check for a big chunk of zeros, right. So that got me interested in SIMD vectorization for fast compares. That led to vectorizing index_byte (with much thanks and help from @yawning), which also led to investigating vectorizing memory ops. All of this led up to finding bugs in core:io which resulted in the test suite which found a handful of bugs. All of that built up to investigating the state of os2 which led to my current struggle.
In terms of packages i can remember a discussion thread on what kind of packages could be added but its from 2020. Some of them have been added already. I’m not sure if an updated version of the wanted package list exist (or if its been private only).
That’s the place from where I got the idea to write core:text/regex and also start on core:archive/tar. I believe @Jeroen is working on core:archive/zip.
More synchronization constructs, possibly, like core:sync/chan, or maybe even improvements to Chan itself. I haven’t allocated the time for much thought on the planning phase yet.
Im slowly chipping away at improving core package’s documentation. Right now working on core:simd, but taking a small break from Odin work to learn some vulkan.
I’ve been planning to implement a Chase-Lev lock-free deque lately, I could try to generalize it enough for core:sync if that would be considered. Might be a good candidate for use in core:thread.Pool too, which currently just uses a Mutex-locked dynamic array.
Simple things like an atomic stack, queue, etc. might also be nice to have. Maybe a QSBR GC or something too? Depends on how much we want in core, I suppose.
I also have some small SIMD-related contributions (an intrinsic and a possible core:simd proc) that I might PR at some point, but I’m planning to discuss them in the Discord server a bit first.
Unfortunately, I share your laments about time, so I can’t make any promises on contributions.
You’d probably still need some sort of lock for channels to work correctly. But a different data structure might benefit from such a thing in certain cases.