4 ms·
Has there ever been an attempt to create a high/low level language pair?
- agumonkey 3y agoinformally I read about many many lispers ending up doing their own assembler to enjoy live/dynamic metaprogrammable native code other languages ended up adding this (can't remember the name) depending on their niche, because one always hit performance issue
- 082349872349872 3y agoJust in the 1980s: Forth/asm C/asm shell/C all langs on VMS TCL/C etc.
- PH95VuimJjqBqy 3y agoI feel like C++ is the answer here, only it's a single language rather than two.
- Qem 3y agoWas going to mention Smalltalk/Slang and PyPy/RPython, pleased to see people already pointed them. There was even a Smalltalk implemented using RPython, but unfortunately that project seems not to be active. Last change 5 years ago: https://github.com/hpi-swa/RSqueak https://github.com/hpi-swa/RSqueak
- Xorathena 3y ago...like the past few decades of Python/Ruby/Node/etc wrapping C-ABI libraries from any language? https://docs.python.org/3/extending/extending.html https://docs.python.org/3/extending/extending.html https://nodejs.org/dist/latest-v20.x/docs/api/n-api.html#node-api https://nodejs.org/dist/latest-v20.x/docs/api/n-api.html#nod... https://docs.python.org/3/library/ctypes.html https://docs.python.org/3/library/ctypes.html https://swig.org https://swig.org When using Zig functions and structs on the low side there are some nice opportunities for making the low/high interface more automatic at comptime, especially when you're jointly compiling (your Zig code + a Zig-based Python interpreter + your Python code) together into one WASM blob. Disclaimer/public-commitment-to-getting-it-released: I've written most of a Python interpreter in Zig as part of another project. (just the basics — won't be big and professional like CPython.) I'll reply here eventually when it's done, available as FLOSS, and ready to say "high-low".
- DanielHB 3y agoABIs are not enough, it is a huge pain in the ass to setup the function invocations, especially cross-platform. Having separate compiling and linking steps for each part of the codebase and stuff is a huge pain. I think Bun (NodeJS-compatible runtime) was planning to add native support for importing C and Zig code directly from JS with typescript codegen. But even that is still a bit meh, you also need some data-exchange format so you can pass complex data structures without paying a serialisation/deserialisation cost.