Hacker News new | ask | show | jobs
Show HN: Flint – A compiled, pipeline-oriented language for CLI tooling (codeberg.org)
1 points by lucaas-d3v 91 days ago
Hi HN, I'm Lucas.

I write a lot of infrastructure tooling and got frustrated with the usual trilemma: Bash gets unmaintainable past 50 lines, Python's interpreter startup/bloat feels too heavy for fast pipeline tasks, and Rust/Go can be too verbose for simple OS-level scripting.

So I built Flint. It’s an experimental, statically-typed language written in Zig that transpiles directly to C99, compiling down to a dependency-free native binary. It is strictly designed for DevOps, SRE, and CLI automation.

Some of the core engineering decisions:

1. The Pipeline Operator (~>): Data flows forward. No nested function hell. It’s functional composition mapped to C. 2. Memory Model: Zero garbage collection and zero `malloc` churn. It uses a 4GB virtual arena via `mmap(MAP_NORESERVE)`. Scripts boot instantly and die cleanly. 3. Zero-Copy Strings: Strings are fat pointers (ptr + len). Operations like `split()` or `lines()` are just memory slicing, which drastically speeds up parsing large logs or JSONs. 4. OS-Level I/O: We bypass User Space bottlenecks where possible. The `copy()` function delegates directly to the `sendfile` syscall. Process orchestration uses `posix_spawnp` instead of expensive `fork()` cloning. 5. Explicit Errors: Inspired by Zig, I/O operations require an explicit `catch |err|` block. No silent Bash failures.

A quick example of what a log parser looks like: ```flint const raw_logs = read_file("server_access.log") catch |err| { exit(1); };

raw_logs ~> to_str() ~> lines() ~> grep("403 FORBIDDEN") ~> join("\n") ~> write_file("threat_report.log") catch |err| { exit(1); };

```

Trade-offs & Current State (v1.7.1): It is NOT a general-purpose language. It lacks a garbage collector by design (long-running daemons will eventually exhaust the arena). I'm currently working on a deep-walk semantic analyzer to enforce proper namespace isolation for the upcoming v1.7.2.

I would love brutal feedback on the architecture, specifically the Zig-to-C99 transpilation pipeline and the arena implementation in the C runtime.

Repo: https://codeberg.org/lucaas-d3v/flint Mirror: https://github.com/lucaas-d3v/flint

1 comments

How does flint compare to to NuShell?

My current favorie pipe shell.

PS: your current readme reads like AI generated.

Which subconciusly makes me wonder:

If the author couldn't botter to write it, why should I botter to read it?

Yes, I used it, you're right about that, your comment might make me rewrite the entire documentation, regarding your question:

"How does flint compare to NuShell?"

Well, basically, you don't "type flint" in your terminal, you write scripts (.fl) to replace legacy .sh or .py files in your local environment or on your servers, it compiles that into a native binary. I would say that flint builds the automation tools, NuShell is where you run them.