frontpage.
newsnewestaskshowjobs

Made with ♥ by @iamnishanth

Open Source @Github

fp.

Boxer3D – Lifting 2D detections to 3D on iPhone with Lidar

https://github.com/Barath19/Boxer3D
1•barathbee•1m ago•1 comments

We tested "stateful AI." It couldn't prove its own history

https://enlightenedcore.org/
1•EC-CGF•2m ago•0 comments

A VSCode Extension for C++ Code Coverage on Windows

https://marketplace.visualstudio.com/items?itemName=covdbg.covdbg
1•superreeen•3m ago•0 comments

Litterbox by Catbox

https://litterbox.catbox.moe/
1•hmokiguess•3m ago•0 comments

Show HN: Git-worm, the simple worktree manager

https://github.com/ThatXliner/git-worm
1•thatxliner•4m ago•0 comments

A full AI intelligence layer on WhatsApp – Opero.so

https://opero.so
1•juancruzguillen•5m ago•0 comments

11,000 Asteroids Spotted in 'Unprecedented' Haul

https://www.newsweek.com/11000-asteroids-spotted-in-unprecedented-haul-with-33-near-earth-objects...
1•mooreds•5m ago•0 comments

A WhatsApp chatbot that becomes smarter the more you use it

https://opero.so/blog/how-your-ai-agent-gets-smarter-every-conversation
1•juancruzguillen•6m ago•0 comments

Enterprise AI does not have a model problem. It has an adoption problem

1•taariqlewis•6m ago•0 comments

Why would you want a 64 bit microprocessor, especially in a personal system? (19

https://www.bourguet.org/v2/comparch/mashey-byte-1991
1•fanf2•7m ago•0 comments

New IKEA Matter over Thread bulbs can be switched to Zigbee by powercycling 12x

https://old.reddit.com/r/homeassistant/comments/1sgstis/90_cri_1500lm_e27_zigbee_bulb_for_999_yes...
1•HeyMeco•7m ago•1 comments

Show HN: MCP Servers

https://awesomemcpservers.ai/
1•sh_tomer•7m ago•0 comments

Let's talk about LLMs

https://www.b-list.org/weblog/2026/apr/09/llms/
1•bsgada•8m ago•0 comments

Show HN: AIMock – One Mock Server for Your AI Stack

https://github.com/CopilotKit/aimock
3•nathan_tarbert•9m ago•0 comments

BojanSocial – A 2010s Microblogging Site

https://bojan.social
1•arrgeeebee•9m ago•0 comments

I quit drinking for a year out of spite

https://dynomight.net/drinking/
1•crescit_eundo•11m ago•0 comments

Hover Bovver (lawn mowing game)

https://en.wikipedia.org/wiki/Hover_Bovver
1•Glandalf•11m ago•0 comments

Why a Liberal Arts Education Will Soon Be More Valuable

https://www.noemamag.com/why-a-liberal-arts-education-will-soon-be-more-valuable-than-ever/
1•sonicrocketman•12m ago•1 comments

Wayland 1.25 Documentation Update

https://www.collabora.com/news-and-blog/news-and-events/wayland-1.25-documentation-update.html
2•losgehts•12m ago•0 comments

The 200k Ghost: Instruction Degradation in Long-Context LLM Sessions

https://github.com/WaspBeeNSOSWE/the-200k-ghost
2•ctoth•13m ago•0 comments

VMs Are Enough

https://github.com/devopsellence/devopsellence/blob/master/docs/vision.md
2•elvinefendi•17m ago•0 comments

Show HN: PageFly – Personal Knowledge OS Inspired by Karpathy's LLM Wiki

https://github.com/Yrzhe/pagefly
1•yrzhe•17m ago•0 comments

MIT Just Found the Cause of the AI Bubble

https://www.youtube.com/watch?v=1zlD0K09IKE
1•OhMeadhbh•18m ago•1 comments

styled-components 6.4 now available

https://github.com/styled-components/styled-components/releases/tag/styled-components%406.4.0
1•quantizor•18m ago•1 comments

I Let Claude Code Autonomously Run Ads for a Month

https://read.technically.dev/p/i-let-claude-code-autonomously-run
3•zdw•18m ago•1 comments

The Instant Messaging Freedom Knowledge Base

https://kb.imfreedom.org/
1•Baljhin•19m ago•1 comments

Level 5 – Weekly live demos from advanced AI users

1•bilaxten•20m ago•0 comments

Amazon CEO Says Chip Business 'On Fire' as AWS Steps Up Challenge to Nvidia

https://www.investors.com/news/technology/amazon-stock-jassy-letter-2025-ai-chips-nvidia/
1•SilverElfin•20m ago•0 comments

A Tour of Oodi

https://blinry.org/oodi/
1•zdw•21m ago•0 comments

Margin – Open annotation layer for the internet

https://margin.at/
2•embedding-shape•21m ago•0 comments
Open in hackernews

I built a Cargo-like build tool for C/C++

https://github.com/randerson112/craft
32•randerson_112•1h ago

Comments

randerson_112•1h ago
I love C and C++, but setting up projects can sometimes be a pain.

Every time I wanted to start something new I'd spend the first hour writing CMakeLists.txt, figuring out find_package, copying boilerplate from my last project, and googling why my library isn't linking. By the time the project was actually set up I'd lost all momentum.

So, I built Craft - a lightweight build and workflow tool for C and C++.

Instead of writing CMake, your project configuration goes in a simple craft.toml:

[project] name = "my_app" version = "0.1.0" language = "c" c_standard = 99

[build] type = "executable"

Run craft build and Craft generates the CMakeLists.txt automatically and builds your project.

Want to add dependencies? That's just a simple command:

craft add --git https://github.com/raysan5/raylib --links raylib craft add --path ../my_library craft add sfml

Craft will clone the dependency, regenerate the CMake, and rebuild your project for you.

Other Craft features:

craft init - adopt an existing C/C++ project into Craft or initialize an empty directory.

craft template - save any project structure as a template to be initialized later.

craft gen - generate header and source files with starter boilerplate code.

craft upgrade - keeps itself up to date.

CMakeLists.extra.cmake for anything that Craft does not yet handle.

Cross platform - macOS, Linux, Windows.

It is still early (I just got it to v1.0.0) but I am excited to be able to share it and keep improving it.

GitHub repo: https://github.com/randerson112/craft

Would love feedback. Please also feel free to make pull requests if you want to help with development!

adev_•2m ago
Feedback of someone who is used to manage large (>15000) software stack in C / C++ / Fortran / Python / Rust / etc:

- (1) Provide a way to compile without internet access and specify the associated dependencies path manually. This is absolutely critical.

Most 'serious' multi-language package managers and integration systems build in a sandbox without internet access for security reasons and reproducibility reasons.

If your build system does not allow to build offline and with manually specified depdemdencies, you will make life of integrator and package managers miserable and they will avoid your project.

(2) Never ever build in '-03 -march=native" by default. This is always a red flag and a sign of immaturity. People expect code to be portable and shippable.

Good default options should be CMake equivalent of "RelWithDebInfo" (meaning: -O2 -g -DNDEBUG ).

-O3 can be argued. -march=native is always always a mistake.

- (3) Allow your build tool to be built by an other build tool (e.g CMake).

Anybody caring about reproducibility will want to start from sources, no binary. This also matter for cross compilation.

- (4) Please offer a compatibilities with pkg-config (https://en.wikipedia.org/wiki/Pkg-config) and if possible CPS (https://cps-org.github.io/cps/overview.html) for both consumption and generation.

They are what will allow interoperability between your system and other build system.

- (5) last but not least: Consider seriously cross-compilation use case.

It is common in the world of embedded systems to cross compile. Any build system that does not support that will be de facto banned from this domain.

wg0•1h ago
Yesterday I had to wrestle with CMake.

But how this tool figures out where the header files and build instructions for the libraries are that are included? Any expected layout or industry wide consensus?

integricho•1h ago
I believe it supports only projects having a working cmake setup, no extra magic
flohofwoe•1h ago
I suspect it depends on a specific directory structure, e.g. look at this generated cmake file:

https://github.com/randerson112/craft/blob/main/CMakeLists.t...

...and for custom requirements a manually created CMakeLists.extras.txt as escape hatch.

Unclear to me how more interesting scenarios like compiler- and platform-specific build options (enable/disable warnings, defines, etc...), cross-compilation via cmake toolchain files (e.g. via Emscripten SDK, WASI SDK or Android SDK/NDK) would be handled. E.g. just trivial things like "when compiling for Emscripten, include these source files, but not those others".

eliemichel•43m ago
CMakes piles up various generations of idioms so there are multiple ways of doing it, but personally I’ve learned to steer away from find_package() and other magical functions. Get all your dependencies as subdirectories (whichever way you prefer) and use add_subdirectory(). Use find_package() only in so-called "config" mode where you explicitly instruct cmake where to find the config for large precompiled dependencies only
duped•1h ago
FWIW: there is something fundamentally wrong with a meta-meta build system. I don't think you should bother generating or wrapping CMake, you should be replacing it.
SpaceNoodled•58m ago
My thoughts exactly. I thought this was going to be some new thing, but it's just yet another reason that I'll stick with Makefiles.
flohofwoe•50m ago
Do your Makefiles work across Linux, macOS and Windows (without WSL or MingW), GCC, Clang and MSVC, or allow loading the project into an IDE like Xcode or Visual Studio though? That's why meta-build-systems like cmake were created, not to be a better GNU Make.
uecker•22m ago
There is something fundamentally wrong with Windows or Visual Studio that it requires ugly solutions.
delta_p_delta_x•19m ago
Windows and Visual Studio solutions are perfectly fine. MSBuild is a declarative build syntax in XML, it's not very different from a makefile.
flohofwoe•54m ago
Cmake is doing a lot of underappreciated work under the hood that would be very hard to replicate in another tool, tons of accumulated workarounds for all the different host operating systems, compiler toolchains and IDEs, it's also one of few build tools which properly support Windows and Visual Studio.

Just alone reverse engineering the Xcode and Visual Studio project file formats for each IDE version isn't fun, but this "boring" grunt work is what makes cmake so valuable.

The core ideas of cmake are sound, it's only the scripting language that sucks.

SleepyMyroslav•20m ago
Another fresh example of what you don't like: https://www.youtube.com/watch?v=ExSlx0vBMXo Building C++: It Doesn't Have to be Painful! - Nicole Mazzuca - Meeting C++ 2025

Build systems don't plan to converge in the future =)

flohofwoe•1h ago
Heh, looks like cmake-code-generators are all the rage these days ;)

Here's my feeble attempt using Deno as base (it's extremely opinionated though and mostly for personal use in my hobby projects):

https://github.com/floooh/fibs

One interesting chicken-egg-problem I couldn't solve is how to figure out the C/C++ toolchain that's going to be used without running cmake on a 'dummy project file' first. For some toolchain/IDE combos (most notably Xcode and VStudio) cmake's toolchain detection takes a lot of time unfortunately.

lgtx•58m ago
The installation instructions being a `curl | sh` writing to the user's bashrc does not inspire confidence.
ori_b•56m ago
They did say it was inspired by cargo, which is often installed using rustup as such:

    curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
uecker•24m ago
This is fitting for something simulating cargo, which is a huge supply chain risk itself.
bikelang•21m ago
I don’t love this approach either (what a security nightmare…) - but it is easy to do for users and developers alike. Having to juggle a bunch of apt-like repositories for different distros is a huge time sink and adds a bunch of build complexity. Brew is annoying with its formulae vs tap vs cask vs cellar - and the associated ruby scripting… And then there’s windows - ugh.

I wish there was a dead simple installer TUI that had a common API specification so that you could host your installer spec on your.domain.com/install.json - point this TUI at it and it would understand the fine grained permissions required, handle required binary signature validation, manifest/sbom validation, give the user freedom to customize where/how things were installed, etc.

spwa4•54m ago
Just switch to bazel, copy my hermetic build config and just use it ... yes, you can hate me know.
cherryteastain•48m ago
Seems to solve a problem very similar to Conan or vcpkg but without its own package archive or build scripts. In general, unlike Cargo/Rust, many C/C++ projects dynamically link libraries and often require complex Makefile/shell script etc magic to discover and optionally build their dependencies.

How does craft handle these 'diamond' patterns where 2 dependencies may depend on versions of the same library as transitive dependencies (either for static or dynamic linking or as header-only includes) without custom build scripts like the Conan approach?

Surac•47m ago
Uses CMAKE, Sorry not for me. Call me old but i prefere good old make or batch. Maybe it's because i can understand those tools. Debugging CMAKE build problems made me hate it. Also i code for embedded CPU and most of the time CMAKE is just overkill and does not play well the compiler/binutils provided. The Platform independency is just not happening in those environments.
bluGill•36m ago
For simple projects. Make is easier for simple things I will grant. However when your projects gets complex at all make becomes a real pain and cmake becomes much easier.

Cmake has a lot of warts, but they have also put a lot of effort into finding and fixing all those weird special cases. If your project uses CMake odds are high it will build anywhere.

tosti•26m ago
Odds are high the distro maintainer will lose hair trying to package it
delta_p_delta_x•21m ago
> most of the time CMAKE is just overkill and does not play well the compiler/binutils provided

You need to define a CMake toolchain[1] and pass it to CMake with --toolchain /path/to/file in the command-line, or in a preset file with the key `toolchainFile` in a CMake preset. I've compiled for QNX and ARM32 boards with CMake, no issues, but this needs to be done.

[1]: https://cmake.org/cmake/help/latest/manual/cmake-toolchains....

looneysquash•43m ago
Nice. I have been thinking of making something similar. Now hopefully I don't have to!

Not sure how big your plans are.

My thoughts would be to start as a cmake generator but to eventually replace it. Maybe optionally.

And to integrate suppoet for existing package managers like vcpkg.

At the same time, I'd want to remain modular enough that's it's not all or nothing. I also don't like locking.

But right now package management and build system are decoupled completely. And they are not like that in other ecosystems.

For example, Cmake can use vcpkg to install a package but then I still have to write more cmake to actually find and use it.

psyclobe•37m ago
> For example, Cmake can use vcpkg to install a package but then I still have to write more cmake to actually find and use it.

I have this solved at our company. We have a tool built on top of vcpkg, to manage internal + external dependencies. Our cmake linker logic leverages the port names and so all you really do is declare your manifest file (vcpkg.json) then declare which one of them you will export publicly.

Everything after that is automatic including the exported cmake config for your library.

tombert•41m ago
This certainly seems less awful than the typical C building process.

What I've been doing to manage dependencies in a way that doesn't depress me much has been Nix flakes, which allows me a pretty straightforward `nix build` with the correct dependencies built in.

I'm just a bit curious though; a lot of C libraries are system-wide, and usually require the system package manager (e.g. libsdl2-dev) does this have an elegant way to handle those?

delduca•39m ago
Compared to Conan, what are the advantages?
bluGill•38m ago
Anyone can make a tool that solves a tiny part of the problem. however the reason no such tool has caught on is because of all the weird special cases you need to handle before it can be useful. Even if you limit your support to desktop: OS/X and Windows that problem will be hard, adding various linux flavors is even more difficult, not to mention BSD. The above is the common/mainstream choices, there Haiku is going to be very different, and I've seen dozens of others over the years, some of them have a following in their niche. Then there are people building for embedded - QNX, vxworks, or even no OS just bare metal - each adding weirdness (and implying cross compiling which makes everything harder because your assumptions are always wrong).

I'm sorry I have to be a downer, but the fact is if you can use the word "I" your package manager is obviously not powerful enough for the real world.

the__alchemist•29m ago
I will categorize this as a pattern I've seen which leads to stagnation, or is at least aiming for it. Usually these are built on one or more assumption which doesn't hold. The flow of this pattern:

  - Problem exists
  - Proposals of solutions, (varying quality), or not
  - "You can't just solve this. It's complicated! This problem must exist". (The post I'm replying to
  - Problem gets solved, hopefully.
Anecdotes I'm choosing based on proximity to this particular problem: uv and cargo. uv because people said the same thing about python packaging, and cargo because its adjacent to C and C++ in terms of being a low-level compiled language used for systems programming, embedded/bare-metal etc.

The world is rich in complexity, subtlety, and exceptions to categorization. I don't think this should block us from solving problems.

seniorThrowaway•37m ago
Having to work around a massive C++ software project daily, I wish you luck. We use conan2, and while it can be very challenging to use, I've yet to find something better that can handle incorporating as dependencies ancient projects that still use autoconf or even custom build tooling. It's also very good at detecting and enforcing ABI compatibility, although there are still some gaps. This problem space is incredibly hard and improving it is a prime driver for the creation of many of the languages that came after C/C++
gavinray•36m ago
The least painful C/C++ build tool I've used is xmake

https://github.com/xmake-io/xmake

The reason why I like it (beyond ease-of-use) is that it can spit out CMakeLists.txt and compile_commands.json for IDE/LSP integration and also supports installing Conan/vcpkg libraries or even Git repos.

    set_project("myapp")
    set_languages("c++20")

    add_requires("conan::fmt/11.0.2", {alias = "fmt"})
    add_requires("vcpkg::fmt", {alias = "fmt"})
    add_requires("git://github.com/fmtlib/fmt v11.0.2", {alias = "fmt"})

    target("myapp")
        set_kind("binary")
        add_files("src/*.cpp")
        add_packages("fmt")
Then you use it like

  # Generate compile_commands.json and CMakeLists.txt
  $ xmake project -k compile_commands
  $ xmake project -k cmake

  # Build + run
  $ xmake && xmake run myapp
delta_p_delta_x•32m ago
Agreed, xmake seems very well-thought-out, and supports the most modern use-cases (C++20 named modules, header unit modules, and `import std`, which CMake still has a lot of ceremony around). I should switch to it.
ethin•19m ago
I would happily switch to it in a heartbeat if it was a lot more well-documented and if it supported even half of what CMake does.

As an example of what I mean, say I want to link to the FMOD library (or any library I legally can't redistribute as an SDK). Or I want to enable automatic detection on Windows where I know the library/SDK is an installer package. My solution, in CMake, is to just ask the registry. In XMake I still can't figure out how to pull this off. I know that's pretty niche, but still.

The documentation gap is the biggest hurtle. A lot of the functions/ways of doing things are poorly documented, if they are at all. Including a CMake library that isn't in any of the package managers for example. It also has some weird quirks: automatic/magic scoping (which is NOT a bonus) along with a hack "import" function instead of using native require.

All of this said, it does work well when it does work. Especially with modules.

shevy-java•35m ago
Will take C only 51 years to adopt.
dima55•23m ago
If you think cmake isn't very good, the solution isn't to add more layers of crap around cmake, but to replace it. Cmake itself exists because a lot of humans haven't bothered to read the gnu make manual, and added more cruft to manage this. Please don't add to this problem. It's a disease
dymk•21m ago
As much of a dog as cmake is, "just use make!" does not solve many of the problems that cmake makes a go at. It's like saying go write assembler instead of C because C has so many footguns.
wiseowise•19m ago
I'm all for shitting on CMake, but Jesus, to suggest Make as a replacement/improvement is an unhinged take.
mutkach•20m ago
Please consider adding `cargo watch` - that would be a killer feature!
looneysquash•12m ago
Besides Cargo, you might want to take a look at Python's pyproject.toml standard. https://packaging.python.org/en/latest/guides/writing-pyproj...

It's similar, but designed for an existing ecosystem. Cargo is designed for `cargo`, obviously.

But `pyproject.toml` is designed for the existing tools to all eventually adopt. (As well as new tools, of course.)

kjksf•8m ago
In the age of AI tools like this are pointless. Especially new ones, given existence of make, cmake, premake and a bunch of others.

C++ build system, at the core, boils down to calling gcc foo.c -o foo.obj / link foo.obj foo.exe (please forgive if I got they syntax wrong).

Sure, you have more .c files, and you pass some flags but that's the core.

I've recently started a new C++ program from scratch.

What build system did I write?

I didn't. I told Claude:

"Write a bun typescript script build.ts that compiles the .cpp files with cl and creates foo.exe. Create release and debug builds, trigger release build with -release cmd-line flag".

And it did it in minutes and it worked. And I can expand it with similar instructions. I can ask for release build with all the sanitize flags and claude will add it.

The particulars don't matter. I could have asked for a makefile, or cmake file or ninja or a script written in python or in ruby or in Go or in rust. I just like using bun for scripting.

The point is that in the past I tried to learn cmake and good lord, it's days spent learning something that I'll spent 1 hr using.

It just doesn't make sense to learn any of those tools given that claude can give me working any build system in minutes.

It makes even less sense to create new build tools. Even if you create the most amazing tool, I would still choose spending a minute asking claude than spending days learning arbitrary syntax of a new tool.