←back to thread

jank is C++

(jank-lang.org)
252 points Jeaye | 8 comments | | HN request time: 1.163s | source | bottom
Show context
johnnyjeans ◴[] No.44535498[source]
I'm not surprised to see that Jank's solution to this is to embed LLVM into their runtime. I really wish there was a better way to do this.

There are a lot of things I don't like about C++, and close to the top of the list is the lack of standardization for name-mangling, or even a way mangle or de-mangle names at compile-time. Sepples is a royal pain in the ass to target for a dynamic FFI because of that. It would be really nice to have some way to get symbol names and calling semantics as constexpr const char* and not have to deal with generating (or writing) a ton of boilerplate and extern "C" blocks.

It's absolutely possible, but it's not low-hanging fruit so the standards committee will never put it in. Just like they'll never add a standardized equivalent for alloca/VLAs. We're not allowed to have basic, useful things. Only more ways to abuse type deduction. Will C++26 finally give us constexpr dynamic allocations? Will compilers ever actually implement one of the three (3) compile-time reflection standards? Stay tuned to find out!

replies(8): >>44535506 #>>44535588 #>>44535621 #>>44535873 #>>44535967 #>>44536143 #>>44539903 #>>44540443 #
benreesman ◴[] No.44535588[source]
Carmack did very much almost exactly the same with the Trinity / Quake3 Engine: IIRC it was LCC, maybe tcc, one of the C compilers you can actually understand totally as an individual.

He compiled C with some builtins for syscalls, and then translated that to his own stack machine. But, he also had a target for native DLLs, so same safe syscall interface, but they can segv so you have to trust them.

Crazy to think that in one computer program (that still reads better than high-concept FAANG C++ from elite lehends, truly unique) this wasn't even the most dramatic innovation. It was the third* most dramatic revolution in one program.

If you're into this stuff, call in sick and read the plan files all day. Gives me googebumps.

replies(3): >>44535907 #>>44536648 #>>44537532 #
1. MangoToupe ◴[] No.44537532[source]
Linking directly to C++ is truly hell just considering symbol mangling. The syntax <-> semantics relationship is ghastly. I haven't seen a single project tackle the C++ interface in its entirety (outside of clang). It nearly seems impossible.

There's a reason Carmack tackled the C abi and not whatever the C++ equivalent is.

replies(2): >>44537593 #>>44537798 #
2. PaulDavisThe1st ◴[] No.44537593[source]
There is no C ABI (windows compilers do things quite differently from linux ones, etc) and there is no certainly no C++ equivalent.
replies(4): >>44537647 #>>44537663 #>>44539049 #>>44539973 #
3. caim ◴[] No.44537663[source]
C ABI is the system V abi for Unix, since C was literally created for it. And that is the abi followed by pretty much any Unix successor: Linux, Apple's OS, FreeBSD.

Windows has its own ABI.

The different abi is pretty much legacy and the fact that x86_64 ABI was built by AMD + Linux etc, while Microsoft worked with Intel for the Itanium abi.

4. caim ◴[] No.44537798[source]
Just parsing C++ is already a freaking hell.

It's no wonder that every other day a new mini C compiler drops in, while no one even attempts to parse C++.

replies(1): >>44538185 #
5. fuhsnn ◴[] No.44538185[source]
There is one pretty serious C++ parser project: https://github.com/robertoraggi/cplusplus
replies(1): >>44538300 #
6. caim ◴[] No.44538300{3}[source]
Wow, thanks! I didn't know this project.

To parse C++ you need to perform typecheck and name resolution at the same time. And C++ is pretty complex so it's not a easy task.

7. cryptonector ◴[] No.44539049[source]
The C ABI is basically per-platform (+ variations, like 32- vs 64-bit). But you can get by quite well pretending there is something like a C ABI if you use <stdint.h>.
8. MangoToupe ◴[] No.44539973[source]
I just want to double-down on the "fuck windows" bit. No other operating system has been more hostile to developers than microsoft has been. Fuck those assholes and may they burn in hell. I'll never lift a finger to give a shit about windows or any microsoft effort, just like they never devoted any effort to caring about anyone but shareholders and clients who also hate humanity.

I'll help their users insofar as "help" means "shedding windows at any cost".