From bytebeat to JIT Recently, I got nerdsniped with bytebeat . I made a simple program for editting it live with visualization 1 . Then I found the expression language quite limted and started making extensions. Half way through, I realized it could just be a “real programming language” ™ which could be edit in a “real text editor” and get hot reloaded on change. Since I already have that , a new…
U wot m8? My exploration in the uxn rabbithole continues. Being a stack language , stack juggling is part of the deal. It does get easier with things like keep mode where items are not consumed from the stack but it is still not easy. To top it off, in uxn, the stack operations can work on either 8-bit or 16-bit numbers: You can push a 16-bit number and pop an 8-bit one out, splitting it in half.…
The beginning Story ahead, skip to the next section for actual technical writing. The uxn ecosystem is my current rabbithole. It deserves its own post but the language itself has captured my interest. Unlike Forth, I actually feel like I can understand it. But while learning and experimenting with the language, I miss having certain tools at my disposal. Namely: a step debugger and a language…
Processors hate him, learn to write faster portable interpreters with this simple trick. tl;dr: In this post, I will talk about a bytecode interpretation technique which performs better than switch dispatch while remaining portable. A tale of two dispatch techniques When it comes to building a bytecode interpreter in C, one usually have two choices: a giant switch or computed goto 1 . Suppose that…
Build tools, every “compiled” language has one of these. Some have several . They are usually pretty good at building their own language and absolutely horrible at everything else. I still can’t for the life of me figure out how to set proper g++ flags in gradle for example. Many of my projects use several languages at the same time, have to be built on multiple platforms and with different…
See part 0 here on why I decided to do this. This blog post assumes that you already have some familiarity with Erlang/OTP and Docker. To follow this article, clone cowdock . First, make sure that everything works, build the release with: make make release Try running the release with _rel/cowdock/bin/cowdock foreground and point your browser to http://localhost:8080 . Now that we have created a…
Docker is all the rage these days. I mean look at this . That’s 1/60th of minecraft . So naturally, I decided to see what this is all about. Basically, it allows you to pack your apps and all its dependencies in a common format to be deployed to The Cloud™. By using this feature in the Linux kernel called container, applications run with almost zero overhead. It also provides isolation between…