Hacker Newsnew | past | comments | ask | show | jobs | submit | zyntraxis's commentslogin

There’s a force within each of us — subtle yet undeniable — that fuels clarity, focus, and strength. For me, it’s the black tourmaline, a stone that anchors energy and sharpens the mind.

Zyn is no different. It’s not just a build system — it’s a source of unseen energy for your code, a silent catalyst empowering developers to create with flow and precision.

Maybe you’ve heard of Zyn. Maybe you’ve even used it. But what’s happening now is just the surface.

Like the tourmaline holding mysteries beneath its surface, Zyn holds potential that reveals itself only when you’re truly ready to tap into it.

The story is unfolding — quietly, powerfully — and it’s already rewriting the rules of how we build.

You’re part of this story.

Keep watching. The real power is yet to come.


We’ve added full IDE project generation support — instantly set up your C++ project in:

Visual Studio Code CLion QtCreator

Just run zyn ide --vscode, --clion, or --qtcreator and start coding. No setup. No config. Just build.

Smarter. Faster. Cleaner. github.com/zyntraxis/zyn


Hello, please understand that these are still the first versions.


You need a clear vision for what you have written the first version of.

Covering the foreseeable needs of your own typical projects, with enough configurability to handle the variations you expect, is quite the opposite of offering general purpose abstractions and models like Make or CMake: not only designing for yourself vs. designing for the public, but prioritizing completeness (an opinionated solution to build your own projects with minimal manual effort) or generality (a tool that can be used for many different projects, ideally handling any C or C++ compilation job at the cost of specifying what to do explicitly).

In the first case, hardcoded GCC options are good enough until you need something more sophisticated; in the second case, hardcoded GCC options severely limit the potential users.



When you want full control over your C++ project without fighting with CMake boilerplate or inconsistent dependency setups, meet Zyn — a powerful tool designed for modern C++ workflows with Git-level dependency tracking, semantic versioning, and a clean project structure.

Quick Start Create your project in seconds: zyn new my_project cd my_project

Add dependencies directly from Git: zyn install https://github.com/fmtlib/fmt.git@9.1.0

Run it fast, run it clean: zyn run --release

Why Zyn? Unlike legacy build systems, Zyn keeps things predictable, clean, and modular:

Git-based dependencies with version locking

Semantic versioning support

Clean project layout with predictable src/, include/, and .zyn/ folders

C++ standards support out of the box

Automatic compiler flag generation

Commands

Command What it does zyn new <name> Create a new project zyn install <url> Install dependency from Git zyn add <path> Add a local dependency zyn run [--debug/--release] Run app zyn update Update all dependencies zyn clean Wipe build artifacts

Project Structure Zyn generates a structure that makes sense:

project/ ├── .zyn/ │ ├── deps/ # Git dependencies │ ├── build/ # Compiled outputs │ └── lock/ # Version locks ├── src/ # C++ source files ├── include/ # C++ headers └── zyn.toml # Central project config

Configuration Example ` [project] name = "my_app" version = "1.0.0" language = "cpp" standard = "c++20" compiler = "clang++"

[directories] sources = "src" include = "include" build = ".zyn/build"

[dependencies] fmt = { git = "https://github.com/fmtlib/fmt.git", tag = "9.1.0" } boost = { path = "/opt/boost" }

[libraries] lib_dirs = ["/usr/local/lib"] libraries = ["pthread", "dl"] `

Dependency Management Add a Git repo directly:

[dependencies] json = { git = "https://github.com/nlohmann/json.git", tag = "v3.11.2" }

Or use a local path: [dependencies] mylib = { path = "../mylib" }

Zyn will lock versions, build automatically, and ensure reproducibility.

Best Practices

Always commit zyn.toml and .zyn/lock/ Use tagged releases instead of branches Run zyn update regularly to keep deps fresh Prefer minimal, focused dependencies — Zyn makes it easy Conclusion Zyn is what happens when you combine modern package management with low-level power. If you're serious about C++, and want a real workflow, try Zyn.

Forget clutter. Forget hacks. Just build.

Zyn — When Control Begins.


You're absolutely right — Conan with a conanfile.txt and minimal CMake can be very concise. And for people already familiar with CMake/Conan, that setup works well.

But here's the key difference:

> In your CMakeLists.txt, when you write find_package(somelib), that only works if the library is already installed and registered properly in the CMake package registry or via a Conan toolchain. Otherwise, you still have to configure remotes, run conan install, deal with CMake toolchain files, set CMAKE_PREFIX_PATH, etc.

With Zyn, there's no need to install or configure anything manually

Zyn:

Clones the repo

Builds it

Links it to your project

Works cross-platform, without needing the library to be "findable" in the system or Conan cache.

So in short: Zyn handles the fetch/build/link pipeline completely, using just the GitHub URL. No find_package, no system-wide installs, no registry or remotes — which makes it extremely easy for quick experiments, hobby projects, or internal tools.

We're not saying Conan is bad — it's powerful, and necessary for big projects. But Zyn aims to remove all friction for the common case.


Hey everyone, I’ve spent the last year building Zyn — a zero-boilerplate build system for C/C++ projects.

It started with a simple frustration: why do I need 50 lines of CMake or Conan config just to use a GitHub library?

With Zyn you just need to put a reference to the library in config.zyn in the [dependencies] section and boom — Zyn clones the repo, builds it, and links it to your project. No CMakeLists.txt, no conanfile.py, no manual target_include_directories, nothing.

Key Features Automatic project init (zyn init debug)

Works out of the box — no toolchain hell

Future plans: IDE project generation, CI/CD integration, Windows/macOS support

Why Zyn? Because build systems shouldn’t get in your way. You shouldn’t need to become a CMake black belt just to compile your code. Zyn is made for people who want to start fast, stay clean, and ship.

I’d love your feedback. Especially from those who’ve worked with CMake, Meson, Bazel, or Conan in real projects. Tell me what sucks, what’s missing, or if the core idea makes sense at all.

GitHub: https://github.com/zyntraxis-corp/zyn

Thanks for reading


I‘m curious: How does Zyn integrate with non-Zyn-style projects? I.e. I have CMake/whatever project X that just tries to find dependencies and lists them in some readme to be manually installed by the user (I think that applies to most C/C++ projects out there). And now, I am listing X as a dependency in Zyn. How does it deal with this situation?


Zyn can integrate with non-Zyn-style projects (like CMake or Make-based ones), but it treats them as opaque third-party dependencies and handles them externally. Here's how it works:

Cloning: When you list a Git-based dependency like https://github.com/user/X in your zyn.toml, Zyn clones it into .zyn/deps.

Build Detection: Zyn looks for known build systems (CMakeLists.txt, Makefile, etc.) in the dependency. If found, Zyn runs the appropriate commands (cmake, make, etc.) to build the project.

Dependency Isolation: Zyn does not parse or resolve the internal dependency graph of project X. If X needs other libraries (Y, Z, etc.), you must also list those manually in your own zyn.toml. This gives you full control and reproducibility.

Header and Library Exposure: After building, Zyn makes the compiled .a/.so/.lib and headers available to your main project automatically by linking them via -I and -L flags.

Example:

Let’s say project X depends on Y and Z, but doesn’t use Zyn itself and just mentions this in a README. You’d do: [dependencies] X = "https://github.com/user/X" Y = "https://github.com/user/Y" Z = "https://github.com/user/Z" Zyn will fetch and build all of them. It doesn’t care that X has no zyn.toml.


> It started with a simple frustration: why do I need 50 lines of CMake or Conan config just to use a GitHub library?

And what answer did you reach? When is it legitimately appropriate? What do we lose out on by using your utility that these older tools do take care of?


Great question — and I really appreciate the thoughtful framing.

Yes, Zyn started from the simple frustration of needing 50+ lines of boilerplate just to try a GitHub library. My answer was: for most projects, that level of complexity isn't necessary. So I built a tool that does the common 80% use case in 1% of the effort. One line of config, and you're ready to go.

When is CMake or Conan legitimately appropriate? Absolutely — when you're working with complex multi-platform targets, ABI constraints, custom toolchains, or need deep CI/CD and IDE integration. Those tools are mature and powerful for a reason.

What do you lose by using Zyn today? Mainly fine-grained control: custom build steps, cross-compilation, binary caching, platform-specific configs — Zyn doesn't try to solve all that (yet). It's intentionally minimal.

But here's the key part: We do plan to grow in that direction. Future versions of Zyn will support IDE project generation, CI/CD workflows, cross-compilation setups, and even plugin extensibility. The goal is to keep the simplicity, while expanding capability.

For now, Zyn is a productivity-first tool — and I think there's room for that in the C/C++ ecosystem.


"we"? do you have any idea how pompous you sound?


We meaning potential users of this build system... I genuinely have no idea what you're on about. I'm just asking for a pros/cons table, pretty standard for a project like this and no knock against it.


comparison table will be in README.md in 24 hours


Happens to all of us.


Sorry for taking so long, here are the pluses and minuses at the end of README.md https://github.com/zyntraxis/zyn/blob/main/README.md


> It started with a simple frustration: why do I need 50 lines of CMake or Conan config just to use a GitHub library?

I'm on my phone, and doing this entirely from memory, so I might get some details wrong (although its not too far off), but heres a minimal example of using a lib with Conan+CMake:

conanfile.txt:

[requires]

somelib/1.0.0

[generators]

CMakeDeps

CMakeLists.txt:

find_package(somelib)

...

target_link_libraries(target somelib)

Done. That's 6 lines of code, not 50. Sure, you can't use the full power of Conan with the simpler conanfile.txt, but it's a tradeoff that's fine for most simple cases.

So my question is: if we're comparing Conan's simple mode with your build system, what does yours do better?

(I definitely don't consider myself a CMake black belt)


You're absolutely right — Conan with a conanfile.txt and minimal CMake can be very concise. And for people already familiar with CMake/Conan, that setup works well. But here's the key difference:

> In your CMakeLists.txt, when you write find_package(somelib), that only works if the library is already installed and registered properly in the CMake package registry or via a Conan toolchain. Otherwise, you still have to configure remotes, run conan install, deal with CMake toolchain files, set CMAKE_PREFIX_PATH, etc.

With Zyn, there's no need to install or configure anything manually

Zyn:

Clones the repo

Builds it

Links it to your project

Works cross-platform, without needing the library to be "findable" in the system or Conan cache.

So in short: Zyn handles the fetch/build/link pipeline completely, using just the GitHub URL. No find_package, no system-wide installs, no registry or remotes — which makes it extremely easy for quick experiments, hobby projects, or internal tools.

We're not saying Conan is bad — it's powerful, and necessary for big projects. But Zyn aims to remove all friction for the common case.


Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: