-
Resurgence
The Resurgence VM, a register virtual machine designed for simplicity and ease of use, based on the old Rendor VM
-
InfluxDB
Power Real-Time Data Analytics at Scale. Get real-time insights from all types of time series data with InfluxDB. Ingest, query, and analyze billions of data points in real-time with unbounded cardinality.
-
AFLplusplus
The fuzzer afl++ is afl with community patches, qemu 5.1 upgrade, collision-free coverage, enhanced laf-intel & redqueen, AFLfast++ power schedules, MOpt mutators, unicorn_mode, and a lot more!
-
SaaSHub
SaaSHub - Software Alternatives and Reviews. SaaSHub helps you find the best software and product alternatives
-
nederlang
Nederlandse programmeertaal 🇳🇱. Geïnterpreteerd en met dynamische types. Met bytecode compiler en virtuele machine, in Rust.
-
SaaSHub
SaaSHub - Software Alternatives and Reviews. SaaSHub helps you find the best software and product alternatives
[1] Here's one of my tries: https://github.com/jevko/jevkalk
Been working on specifying the Utena machine. My initial plan was to add registers and instructions to the SECD machine as I usually do, to fit everything we need to keep track of. Notably, the Self machine keeps track of both "explicit" and "implicit" self; the former used for sends which explicitly write out the receiver e.g. self blah, and the latter used for sends with no explicit receiver e.g. blah.
Yeah Python for sure would've been easier. In fact, since >80% of this new language is pretty much just Motorway as it is, differing only by the symbols used, I could have reused a lot of the code I wrote for Motorway, which was in Python.
Having done the embedded Go, I showed my lang to some of the people over at r/golang. They were very enthusiastic about the language, but scornful of my having the docs in a .pdf rather than the README of the repo, so I've put it all in there instead.
1: https://github.com/ArkScript-lang/Ark 2: https://github.com/AFLplusplus/AFLplusplus
1: https://github.com/ArkScript-lang/Ark 2: https://github.com/AFLplusplus/AFLplusplus
The README contains some instructions on building documentation using cargo (they're not that complete, but we document almost every part of Resurgence at least a little bit), and the SDK repo contains some examples (alongside some RASM code, which is the assembly language we created for development purposes): https://github.com/Resurgence-VM-Development/sdk
I'm helping with the maintenance of the OCaml compiler. Mostly reviewing other people's PR and giving feedback, and occasionally writing some code. The last few weeks have been surprisingly diverse, for example:
I am iterating over the languages features for Cwerg's Frontend which aims to be a low level language with about the complexity of C but with some of the comforts of modern languages. I am especially happy with the choice of adding sum types. Relative to C the current feature set looks like this: Removed: * arrays decay to pointers * bitfields * separate compilation (more of a backend issue) * pre-processor * varargs * implcit type conversions * (untagged) unions * ++/-- * comma operator * implicitly nullable pointers * goto
The vast majority of October's improvements on Boba were type system and runtime bug fixes. In particular, the effect handler/delimited continuation semantics were hopelessly busted beyond a few simple examples I'd fixated on.
If you make the parser and would like that, I'd love to feature it here: https://github.com/jevko/community
So far this has one written in Haskell: https://github.com/lgastako/jevko
Besides that I wrote some parsers in various languages. The most mature is the JS one: https://github.com/jevko/parsejevko.js
Otherwise I have a usable parser in Lua: https://github.com/jevko/jevko.lua ; available on luarocks: https://luarocks.org/modules/jevko/jevko.lua
I tried sketching one out in Python: https://github.com/jevko/parsejevko.py ; one in C: https://github.com/jevko/parsejevko.c ; one in Java: https://github.com/jevko/parsejevko.java ; one in Scheme: https://github.com/jevko/jevkostream.scm (that's a streaming parser stub, more fleshed out one in JS is here: https://github.com/jevko/jevkostream.js ); and there are some implementations of Jevko formats and other related things in the GitHub organization: https://github.com/jevko
I tried sketching one out in Python: https://github.com/jevko/parsejevko.py ; one in C: https://github.com/jevko/parsejevko.c ; one in Java: https://github.com/jevko/parsejevko.java ; one in Scheme: https://github.com/jevko/jevkostream.scm (that's a streaming parser stub, more fleshed out one in JS is here: https://github.com/jevko/jevkostream.js ); and there are some implementations of Jevko formats and other related things in the GitHub organization: https://github.com/jevko
I tried sketching one out in Python: https://github.com/jevko/parsejevko.py ; one in C: https://github.com/jevko/parsejevko.c ; one in Java: https://github.com/jevko/parsejevko.java ; one in Scheme: https://github.com/jevko/jevkostream.scm (that's a streaming parser stub, more fleshed out one in JS is here: https://github.com/jevko/jevkostream.js ); and there are some implementations of Jevko formats and other related things in the GitHub organization: https://github.com/jevko
I tried sketching one out in Python: https://github.com/jevko/parsejevko.py ; one in C: https://github.com/jevko/parsejevko.c ; one in Java: https://github.com/jevko/parsejevko.java ; one in Scheme: https://github.com/jevko/jevkostream.scm (that's a streaming parser stub, more fleshed out one in JS is here: https://github.com/jevko/jevkostream.js ); and there are some implementations of Jevko formats and other related things in the GitHub organization: https://github.com/jevko
I tried sketching one out in Python: https://github.com/jevko/parsejevko.py ; one in C: https://github.com/jevko/parsejevko.c ; one in Java: https://github.com/jevko/parsejevko.java ; one in Scheme: https://github.com/jevko/jevkostream.scm (that's a streaming parser stub, more fleshed out one in JS is here: https://github.com/jevko/jevkostream.js ); and there are some implementations of Jevko formats and other related things in the GitHub organization: https://github.com/jevko
I'm taking a brief detour from working on my actual language to work on some underlying theory. My language (Sligh) is based on informal certifying compilation, i.e. the compiler generates a test checking for correctness of the compiled program instead of a proof. Because I'm mostly interested in generating code for full-stack web applications, I think optimization is actually essential for the practicality of this approach, otherwise the certificate test will be much less effective.
Since the last time I posted, I finished implementing pattern matching for schmu. To make matching on multiple columns less confusing I also added a tuple syntax to the language (finally), which are treated as anonymous records in codegen. Since then, I'm trying to overhaul my memory management, as my RAII-like solution only worked for linear code. In my first big departure from OCaml semantics, I decided to implement mutable value semantics. The paper linked in the Val language introduction makes a strong case for value semantics and after watching a couple of talks by Dave Abrahams, I wanted to try see how it feels. By making mutability be transitive and explicit, it also fixes one of the (few) gripes I have with OCaml that an array can never be really const as it is a reference type (it's possible to enforce constness with modules, but that's not exactly lightweight, syntax wise). Implementing mutable value semantics was pretty straight forward on the typing side, but I'm still not completely done with the codegen. This is due to 1. Assumptions about immutability I made in a lot of places are now wrong, and I had to completely change the way I pass values to functions. 2. I had to implement reference counted arrays, which was more work than I thought it would be. There are still edge-cases coming up in testing from time to time. Yesterday I finally managed it work for tail recursion, yay! I'm looking forward to getting rid of unneeded reference count updates in the future, by moving them to compile time, at least for linear code, lobster style. That's also an excuse to read that Perceus paper again. For the rest of November, I want to enhance my module system a bit. In particular, I want to add signatures and allow locally abstract types. I hope to have this in place before December to do the Advent of Code in my language.
Been working on my language Glide, which is now open source: https://github.com/dibsonthis/Glide
Have been working on Nederlang for the last few weeks again. My last (and first!) attempt at an interpreted programming language was in C but it wasn't that pleasant to work in. I'm now using Rust and am pretty happy with it so far. Performance is great (using tagged pointers and some nice optimizations using specialized opcodes for common operations, like operating on a constant and a variable, bypassing the stack), it's a joy to work in and exotic segfaults are a thing of the past.
Related posts
-
VDrift: Cross-Platform Driving Simulation
-
Felix: Statically typed, performant scripting language with native C++ embedding
-
Show HN: MicroTCP, a minimal TCP/IP stack
-
Lost my creative spark - looking for help
-
The Umka scripting language released: Now with closures, type switch statements and faster strings