Show HN: Nibble

github.com

94 points by glouwbug 1 day ago

An attempt at a single pass LLVM frontend in ~3000 lines of C without external dependencies, malloc, or an AST. Included are some graphical examples. The IR isn't perfect, and the README touches on one particular downfall

childintime 1 day ago

Love this. But no explanations about the language. `defer` for example I didn't see in the 2 `main.n` I checked, and memory management remained a mystery. Would love to see a little more context.

Also, this is actually around 1000 lines.

felooboolooomba 1 day ago

This is just an observation, not a criticism of your brilliant project OP. People with sensory processing issues can struggle with reading text when everything is animating around it (as per readme).

  • latexr 1 day ago

    I’m not doubting you, but what kind of sensory processing issues are you thinking of? I’m interesting in reading more if you have a link.

  • thih9 1 day ago

    These days mainstream browsers offer a "hide distracting elements" feature, which makes hiding gifs trivial, especially in this case.

    • felooboolooomba 22 hours ago

      Yep, the "reader mode" in Firefox is a gift from the Æsir to me. But when I get overwhelmed my first instinct is sometimes to close the tab right away.

bensanm 1 day ago

Looks really neat and minimalist - nice work :-) Big fan of Kishimisu's shader work - nice to see you featuring it on your main page.

Panzerschrek 5 hours ago

Good for a student work, but nothing special.

ElenaDaibunny 1 day ago

clean project, bookmarked it. always nice seeing side projects that actually ship instead of staying in readme-only mode forever.

hartator 21 hours ago

What’s IR?

  • phrotoma 21 hours ago

    Intermediate Representation. It's an architecture independent "halfway point" that happens during compilation, in between reading the source code and writing the binary. It's part of the approach that makes it possible for LLVM to "plug-in" a new target architecture by just adding a bit that turns IR into machine code for the new chip.

    I'm oversimplifying because it's all black magic to me, but I do know that acronym.

mock-possum 1 day ago

What’s the connection to the snake clone or a half-byte?

binyang_qiu 1 day ago

Doing this in ~3k LOC C without malloc or an AST is honestly pretty impressive. Interested to see how far the IR can scale.

fizza_pizza 1 day ago

This is seriously impressive. A single pass LLVM frontend in ~3k lines of C with no malloc or AST is kind of wild. The graphical examples were a really nice touch too. Curious to see how far you can push the IR.