3 ms·
If you're interested in programming languages, compilers, and/or Wasm, I have tons of little projects in both Virgil and Wizard that might be of interest. I'll
by titzer 5y ago
If you're interested in programming languages, compilers, and/or Wasm, I have tons of little projects in both Virgil and Wizard that might be of interest. I'll be getting students this year, but at this point Virgil is done enough that people can try it out. Neat projects might be:
- Write an arm64 assembler. Useful for eventually porting Virgil and Wizard both to M1 macs.
- Write a more complete library for Linux/POSIX. Can read/write files already, but why not sockets and graphics and things?
- Raspberry Pi or ESP32 projects with Virgil.
- Improve Virgil's garbage collector. E.g. even a simple generational Mark&Sweep would be an upgrade for long-running programs.
- Syntax highlighting / modes for Sublime, VSCode, etc would be very welcome. Emacs and vim modes exist already.
- Do some neat Web demos with the Wasm backend. It's pretty easy now to make a Wasm module with imports and then supply those imports from JS.
- In Wizard, do a complete WASI implementation on Linux/MacOS.
- Do something with node.js and Virgil compiled to Wasm. I wrote a node.js wrapper than can load Wasm modules and there's a semi-complete System implementation on node.
- Get source-level stack traces working with the Wasm backend. Just involves some callbacks and getting the meta section into the Wasm binary.
- ilolu 5y agoWhat sort of background is needed to work on the little projects ?. I have very less experience in compilers but I am super interested in learning about compilers and wasm.
- titzer 5y agoIf you want to work on, e.g. making a neat web demo with Virgil and Wasm, you don't need to know of the compiler internals, as you won't need to poke around inside the compiler. That one is mostly specifying some external functions to import into your Virgil program, writing the Virgil program, and then writing the JS glue to get the resulting Wasm module to run in a browser. I'd be happy to give pointers. In fact, I realize now that each of the above projects could probably benefit from a few paragraphs of documentation for any takers. Failing that, feel free to email me directly with questions or post issues on the repo.