Implemented so far:
Work in progress:
Now why am I writing this? Because it's a survey. Where should the immediate focus be:
All are awesome features.
If I had to pick one it will be REPL but closely followed by New C(++) backend as I feel the latter will incentivize the creation of new backends, especially if the compiler doesnt need to be forked.
I would try to use the big refactor opportunity to clean out and remove/deprecate/improve experimental and legacy stuff like:
--experimental:dotOperators|callOperator|parallel|destructor|notnil|dynamicBindSym|forLoopMacros|caseStmtMacros|codeReordering|compiletimeFFI|vmopsDanger|strictFuncs|views|strictNotNil|overloadableEnums|strictEffects|unicodeOperators|flexibleOptionalParams|strictDefs|strictCaseObjects|inferGenericTypes and --legacy:allowSemcheckedAstModification|checkUnsignedConversions|laxEffects|verboseTypeMismatch|emitGenerics
That alone kills a ton of bugs, and incompatible optional features (like the 2 not-nil checkings), and reduces the footprint of the work needed to make all that work again on the new C backends, reduce the footprint before you have to re-build on top, no one is really using all that "experimentals" in production.
Maybe just run nim --fullhelp and check what can be improved/removed, ordering by easiest to hardest IMHO.
Would be my vote.
I'd personally find a REPL most fun, but I think adding features that benefit larger projects first like IC might be worth it more. And also of course I'm always in favour of something that makes an existing codebase more stable and easier to maintain, so juancarlos' suggestion (assuming it is actionable, I don't know anything about compilerdev) would also have my support.
Therefore my vote is split somewhere between IC and that.
All the proposed features are very valuable.
I agree with @juancarlospaco that this seems like a good time for a cleanup, but, since that wasn't on your list, I'll say incremental compilation is the most important thing to me.
I hadn't even been expecting a REPL for Nim in the near term, and I quite desire a good one. I'm not sure I'd make it second though. Tough call!
I did not find a roadmap 2024. Does a roadmap for 2024 exist already?
Sorry, no, I'm still writing it.
What will the design of exceptions and try/except in NIR look like ?
Special instructions and labels emitted in a way so that the structure can be extracted back, if required.
Was NIR replaced by NIF/NIFC?
Yes.
IIRC one was a frontend and the other a backend?
NIR was for backends only, NIF is for everything.