Yeah, Lix is good. It’s not what it claims to be, but just being a CppNix fork is enough.
So, I’m not developing in secret. My code is here, in my rpypkgs flake, and as the .packages.${system}.reguix attribute of that flake. One would probably want this Cachix cache if they’re on amd64 and want to avoid building PyPy or CPython. (Upstream discussion about this bootstrap path is here.) I’ll send out a more serious round of invites once the lexer, parser, compiler, and evaluator can actually handle a real-world evaluation.
For posterity: Hi! I’m linking this to you because you’d like to contribute to Regiux. Cool! You need to know RPython, a dialect of Python 2.7 used to specify interpreters. In a nutshell, RPython is statically-typed with lots of metaprogramming, somewhere around Java or Haskell. You write a Python 2.7 program, it gets imported into memory, and then the RPython toolchain compiles from memory into C, optionally generating a JIT compiler. For a gentle explanation, check out Brown et al doing Brainfuck (1, 2); if you’d like to see what high-performance RPython looks like, check out my DIVSPL interpreter or my take on Brainfuck.
that’s awesome, and RPython seems like a great choice for a more comprehensible foundation for a Nix evaluator! I’ll definitely be digging into this more as time permits this weekend. feel free to start a thread for this if you’d like more eyeballs on it at any point in the future!
Yeah, Lix is good. It’s not what it claims to be, but just being a CppNix fork is enough.
So, I’m not developing in secret. My code is here, in my rpypkgs flake, and as the
.packages.${system}.reguix
attribute of that flake. One would probably want this Cachix cache if they’re on amd64 and want to avoid building PyPy or CPython. (Upstream discussion about this bootstrap path is here.) I’ll send out a more serious round of invites once the lexer, parser, compiler, and evaluator can actually handle a real-world evaluation.For posterity: Hi! I’m linking this to you because you’d like to contribute to Regiux. Cool! You need to know RPython, a dialect of Python 2.7 used to specify interpreters. In a nutshell, RPython is statically-typed with lots of metaprogramming, somewhere around Java or Haskell. You write a Python 2.7 program, it gets imported into memory, and then the RPython toolchain compiles from memory into C, optionally generating a JIT compiler. For a gentle explanation, check out Brown et al doing Brainfuck (1, 2); if you’d like to see what high-performance RPython looks like, check out my DIVSPL interpreter or my take on Brainfuck.
that’s awesome, and RPython seems like a great choice for a more comprehensible foundation for a Nix evaluator! I’ll definitely be digging into this more as time permits this weekend. feel free to start a thread for this if you’d like more eyeballs on it at any point in the future!