←back to thread

Four Years of Jai (2024)

(smarimccarthy.is)
166 points xixixao | 2 comments | | HN request time: 0.419s | source
Show context
sph ◴[] No.43726312[source]
Surprising deep and level headed analysis. Jai intrigues me a lot, but my cantankerous opinion is that I will not waste my energy learning a closed source language; this ain’t the 90s any more.

I am perfectly fine for it to remain a closed alpha while Jonathan irons out the design and enacts his vision, but I hope its source gets released or forked as free software eventually.

What I am curious about, which is how I evaluate any systems programming language, is how easy it is to write a kernel with Jai. Do I have access to an asm keyword, or can I easily link assembly files? Do I have access to the linker phase to customize the layout of the ELF file? Does it need a runtime to work? Can I disable the standard library?

replies(4): >>43726339 #>>43726530 #>>43726853 #>>43730682 #
WalterBright ◴[] No.43730682[source]
Some comparison with D:

> Do I have access to an asm keyword,

Yes, D has a builtin assembler

> or can I easily link assembly files?

Yes

> Do I have access to the linker phase to customize the layout of the ELF file?

D uses standard linkers.

> Does it need a runtime to work?

With the -betterC switch, it only relies on the C runtime

> Can I disable the standard library?

You don't need the C runtime if you don't call any of the functions in it.

replies(2): >>43734737 #>>43735502 #
1. GoblinSlayer ◴[] No.43735502[source]
I don't get what's up with the runtime hysteria. All languages have a runtime maybe except for assembler. And linux kernel itself is infamous for being not C by a large margin. And in general remove something important from any program and it will stop working.
replies(1): >>43735716 #
2. muth02446 ◴[] No.43735716[source]
If you do embedded work, you often want to be in total control of all memory allocations. So it is good to know that the compiler will not produce some invisible heap allocations and there is a useful subset of the standard libray that does not use them either.