adamthekiwi
Joined 5 years ago
Joined 5 years ago
I used the language and VM to build a userspace for a custom operating system, writing a shell and a PowerPoint app. https://github.com/adam-mcdaniel/sage-os
I also built a web playground so you can compile and run the language in the browser, with JavaScript interop!! https://adam-mcdaniel.net/sage
I made a video exploring my compiler for a language that targets a brainfuck-based VM: https://github.com/adam-mcdaniel/sage
I used the language and VM to build a userspace for a custom operating system, writing a shell and a PowerPoint app. https://github.com/adam-mcdaniel/sage-os
I also built a web playground so you can compile and run the language in the browser, with JavaScript interop!! https://adam-mcdaniel.net/sage
Check out the web-demo to run the compiler in the browser, along with a graphical example using JavaScript interop! https://adam-mcdaniel.net/sage
Sage is designed to be portable, but also useful. To prove its usefulness, I used it to implement a user-space for a new operating system: SageOS https://github.com/adam-mcdaniel/sage-os The language also runs on embedded devices, like the flipper zero!
Join the Discord to learn more about Sage! https://discord.gg/rSGkM4bcdP
Checkout the web-demo here! https://adam-mcdaniel.net/sage
I decided to add pointer arithmetic because I needed a convenient way to interface with common existing constructs like allocators; I want to be able to hook my program up to valgrind and see what's wrong! But these pointer arithmetic operations are also generic across implementations: the web implementation uses tape indices as pointers (i.e. pointers with element sizes of 1), but the desktop implementation uses malloc/free and uses regular eight byte pointers. The compiler doesn't know the difference! This allows the architecture a large amount of flexibility across lots of different types of backend implementation!
Thanks for the feedback!
Thanks for the feedback!