frontpage.
newsnewestaskshowjobs

Made with ♥ by @iamnishanth

Open Source @Github

Open in hackernews

Show HN: Seastar – Build and dependency manager for C/C++ with Cargo's features

https://github.com/AI314159/Seastar
44•AI314159•9h ago
Hi hackers!

I'm a self-taught solo teenage dev working on Seastar, a unified build system and dependency manager for C and C++. It is capable of compiling and linking projects, managing recursive dependencies and headers, and even has a template system -- your C++ library is one `seastar new mylib --lang c++ --lib` away! Also, everything is configured in TOML, because TOML is awesome.

C is one of my favorite languages, but I usually end up writing stuff in Rust because I love Cargo. Unlike C, Cargo handles the dependencies, linking, globbing, and so much more for you. So I wrote Seastar to give that function in C and C++.

What's planned? A package registry like crates.io, compatibility with CMake projects, commands to migrate, and so much more. If you have more ideas, please give them!

I am trying to reach 150 stars by the end of summer, and thus a star would be greatly appreciated! This project is still in development, and a star helps out a ton.

Comments

dmead•9h ago
Just a comment on the name. Seestar, C* are already things that exist. You may want to think up something different.
AI314159•8h ago
Thanks! I always have trouble coming up with names (any suggestions would be awesome), so I often end up giving temporary names, and then forget to rename :/
smallhands•6h ago
Seamonster?
smallhands•5h ago
Packagex
AI314159•2h ago
Hmm, I'll consider them, thanks! I'm sure I'll find something soon...
scuol•8h ago
Highly recommend you rename because of a name clash with an existing famous C++ framework: https://seastar.io/
AI314159•8h ago
Thank you for the tip! Yeah, I was probably gonna rename either way, funny I didn't find that when Googling...
teitoklien•7h ago
kinda surprising lol, seastar runs all sorts of popular stuff like ScyllaDB (a nosql performant db meant to be a replacement to Cassandra)
revskill•8h ago
How did people live without this for c projects is beyond my imagination.
motorest•8h ago
> How did people live without this for c projects is beyond my imagination.

They didn't. Things like Conan and vcpkg exist for almost a decade by now.

Also, on any OS under the sun except Windows, the system's package manager is C's and C++'s package manager. These C package managers called deb or rpm are older than half the people posting here.

AI314159•8h ago
This, also my goal wasn't necessarily to replace existing tools, but to fill a gap. "If it isn't configured in TOML it isn't worth using" is something that I've heard, whether or not you agree. As for system packages, version conflicts do happen. My goal wasn't to replace existing build systems, or replace existing package managers, but to combine them. It isn't very good in its current state, but by combining two essential tools into one, I hopefully make it easier.
mryall•8h ago
Looks like a great start. Using Rust and TOML configuration are good choices.

With a project like this where there are many (many) existing attempts to solve it, I think it helps to take a hard look at what exists today and design your solution to solve a specific problem you see.

Then you can pitch it that way to your first adopters too - something like “Basel, but with easier deps” or “CMake, but with config humans can understand”.

AI314159•8h ago
Thanks, that's great advice! I'll consider it. I've been meaning to update the readme for a while now, so this just gives me an excuse to do so. I think the most important thing to work on right now is compatibility. Obviously, people like OpenCV or Vulcan aren't going to switch, and so it should at least be easy for those who do to make the switch.
gavinray•8h ago
Not to be confused with Scylla DB's "Seastar" C++ non-blocking event driven server SDK

https://github.com/scylladb/seastar

AI314159•7h ago
I know, others have mentioned it as well. Seastar is a temporary name I forgot to change, and if you have any suggestions, feel free to provide them!
hedora•7h ago
Depending on what you’re targeting, you might prioritize compatibility with debian packages over cmake.

Cmake is a hot mess, but gets you windows compatibility.

Debian would work better with the lion’s share of open source c / c++.

throwaway70985•7h ago
> Seastar is very simple to build and run. Assuming you have Cargo and Rust installed

Guess I'll just stick with CMake.

AI314159•7h ago
It's kind of the-chicken-and-the-egg scenario. I wanted a hospitable development environment to build a hospitable development environment. Also, prebuilt binaries work just fine. I made this in around eleven hours, so it should be fairly easy to rewrite in other languages if that is what the community wants. This project is already getting a lot more attention than I was expecting, and it is definitely still in alpha. However, you can use whatever tools you want to use.
maccard•6h ago
A good goal for these sorts of projects is bootstrapping - can you build seastar with seastar?
AI314159•6h ago
Since Seastar is written in Rust, and I don't have Rust support yet...no. However, it should be fairly simple to add. Despite what people want me to do, I am not going to fully reimplement Cargo -- it took the Rust devs years, and I'm just one person. However, I can call Cargo with the correct flags and config files to interface with my existing code, and I am planning on doing that soon.
ronsor•2h ago
Arguably a package manager shouldn't be so complex that it takes many developers years to implement.
jdcasale•1h ago
As opposed to taking like 30 seconds to install cargo and rust?

I get that the elegant thing to do would be to bootstrap this, but in practice does this actually cost you anything, or is this a purely aesthetic concern?

mgaunard•7h ago
many build systems have a notion of build targets, with various target types (static/shared library, module, executable, etc.).

You don't have that (which I personally find is good, but that's arguably because I'm opinionated about not having libraries), but how do you deduce what to link and what are the entrypoints?

AI314159•7h ago
Currently, I just have "binary" targets, which output an executable, and "library" targets which output a static library. This is decided by a flag in the TOML [package] table: is_lib = true|false. For a binary project, it just links as normal, using the compiler as the linker by default (also can be changed through TOML). Thus, the entry point is `main()`. However, for libraries, the object files are configured the same, and it calls my link function, but with different arguments and `ar` set as the linker. Therefore, a `.a` file is created. (Probably this is my biggest source of Windows incompatibilities)
mgaunard•7h ago
so a project is a single target, and you still have the notion of libraries (which to me are an anti-pattern).

so no interest from me personally.

AI314159•6h ago
That's alright! However, if you don't mind me asking, what would make you potentially interested?
arjonagelhout•4h ago
Could you elaborate on why you think libraries are an anti-pattern?

Is the alternative just one library or executable, with namespaces and directory structure being the source of truth for organization of a codebase?

r2vcap•6h ago
I know many people are dissatisfied with existing C++ build systems like CMake, and I understand why. However, before creating a new build system, one must first understand C++’s current position. These days, C++ is chosen less frequently due to the wide range of alternatives available. Still, C++ shines when it comes to bridging distinct components. While it’s tempting to optimize for the simplest use cases and make things as concise as possible, real-world C++ build systems often need to handle a wide variety of tasks—many of which are not even C++-specific. That’s where CMake proves its value: it can do almost anything. If a new build system can’t handle those cases, it’s likely to be dead on arrival.
AI314159•6h ago
An excellent point! I hope I'll be able to handle those cases in the future, and I am kind of seeing this situation: people aren't understanding that this is _the first alpha pre-release of 0.1.0 software._ It isn't going to do everything. It was mostly a test of my skills that started to turn into a serious project, which it wasn't really intended to be.
PaulDavisThe1st•5h ago
libfftw3 is one the most widely used Fast Fourier Transform open source libraries.

It can be built to be used in a single-threaded environment, or a multi-threaded one. It can be built to use 32 bit or 64 bit floating point as its internal data type.

Any build system that cannot handle or allow me to express "I depend on the single-threaded 64 bit version of libfftw3" doesn't get my attention.

Does yours?

geokon•4h ago
I think this was maybe true a decade ago...

Having to contact them to get a license is a pain, and in benchmarks there are on-par or better libraries available. The tuning steps are baroque and if you really care about performance that much.. You'd probably look at GPU solutions

Are you expecting to do the tuning step during the build?

Last I checked their arm support was terrible.. But maybe that's changed

PaulDavisThe1st•3h ago
What I'm expecting: we have our own ad-hoc "build system" which is a shell script that configures, builds and installs all our dependencies (about 80 libs). That includes tuning the configure step of several different libraries.

Any build system that won't allow us to do this is unusable.

PaulDavisThe1st•3h ago
Also, why do you "have to contact them to get a license" ? It's intentionally an open source library, release under the GPL. If you want to use it in a closed source context, sure, you'd probably look elsewhere.
geokon•4h ago
Dependency management is a solved problem in the C/C++ world.

It all should be done from within CMake using Hunter. They handle diamond dependencies correctly (everyone else just yolos it), they handle "package registry" correctly, ie git repos + hash verification. They handle tool chain files and forwarding of compilation flags correctly. I had a library building for like a dozen targets with it (including crazy stuff like iOS 9)

augusto-moura•4h ago
Solved problem is a strong statement. I've never heard of Hunter before. And as far as I can remember the most popular way of solving this is having a list of dependencies in a README somewhere so you can install them and their headers with your os/distro package manager
geokon•3h ago
That's not a serious solution. You don't control dependency versions if you use a package manager and you can't build full static builds or full debug builds etc. Some targets don't have package managers (ex an embedded device)
augusto-moura•3h ago
It is not, but it is the standard. So I would this is _not_ a solved problem
no_circuit•3h ago
I wouldn't recommend Cargo as something to copy for a real project, even though I've a fan of and have been using Rust exclusively lately. It suffers from not being able to handle global features without manually/conditionally propagating features to dependencies, as well as not being able to propagate metadata to dependencies without abusing the links functionality.

Why is that important? Well that's useful if you want something like json/serde or not in all transitive dependencies for a particular artifact you are generating like a library or a binary. That applies for other configurability that C/C++ developers bake into their libraries too.

Is this an educational learning experience as part of Hackclub which is a linked organization on your GitHub profile? Whether or not if so, trying to build this will be a good learning experience.

Think beyond just C/C++ and maybe Rust...

The entire set of ideas of things to implement is just to look at the feature set of Bazel and Buck 2 (which happens to also be written in Rust). Those offer functionality to build complete products in any language, locally or distributed across a build farm of servers, and glue them all together in any format. For example you can't build a multi-arch OCI/Docker container image for a Rust-binary server in a single command with Cargo.

Except for the initial learning curve, using them could be as simple as including their "build" files in your published git repo. No central repository needed.

https://github.com/hackclub https://bazel.build/about/why https://buck2.build/docs/about/why/

AI314159•2h ago
Thank you for your advice! Yes, this is partially for Hack Club, partially as a personal project. I'll look into Bazel and Buck2.

The latest room-temperature superconductor claim debunked

https://www.quantamagazine.org/room-temperature-superconductivity-claim-falls-apart-update-20201014/
1•karlperera•50s ago•1 comments

Game Boy Advanced programming tutorial

https://www.coranac.com/tonc/text/toc.htm
1•ibobev•9m ago•0 comments

The herb linked to better memory, lower anxiety and Alzheimer's protection

https://www.the-independent.com/life-style/health-and-families/rosemary-benefits-alzheimers-memory-anxiety-b2770395.html
1•XzetaU8•10m ago•0 comments

The U.S. Navy is more aggressively telling startups, 'We want you'

https://techcrunch.com/2025/06/15/the-u-s-navy-is-more-aggressively-telling-startups-we-want-you/
1•gametorch•18m ago•0 comments

Advanced tool for repository analytics, statistics, including fake stars

https://github.com/snooppr/shotstars
1•zaharqoops•18m ago•1 comments

YouTube might slow down your videos if you block ads

https://www.pcworld.com/article/2814755/youtube-might-slow-down-your-videos-if-you-block-ads.html
2•rapamycin•19m ago•0 comments

Nesdev.org

https://www.nesdev.org/
1•ibobev•20m ago•1 comments

Simple ideas with impact from Clojure and Rama (by Nathan Marz) [video]

https://www.youtube.com/watch?v=25lJNRibYv8&list=PLtw0bWXdq7pMmm1ALroZ_c5aZB-l4V06V&index=1
1•adityaathalye•21m ago•0 comments

Game Boy Development Community

https://gbdev.io/
2•ibobev•25m ago•0 comments

ExpDeals 5.0 – Only Working Priceline Express Deals Finder

http://expdeals.com
1•coolwulf•27m ago•0 comments

Frontier Valley: New Special Regulation Zone in Alameda, CA

https://frontiervalley.com/
3•ddlatham•35m ago•1 comments

Pessimists Archive

https://pessimistsarchive.org/
1•animal_spirits•36m ago•0 comments

Vector and Semantic Search in the Lakehouse

https://www.e6data.com/blog/vector-semantic-search-lakehouse-faster-insight-unstructured-data
1•gete6data•38m ago•1 comments

Ask HN: What body of knowledge do you have that LLMs don't?

1•toephu2•38m ago•0 comments

Anonymous video chat app – no login, just connect (Java and WebRTC)

https://randomchat-hfta.onrender.com
2•thughari•41m ago•1 comments

Physicists on a remote island: we visit the ultimate quantum party

https://www.nature.com/articles/d41586-025-01863-w
1•MukundMohanK•45m ago•0 comments

Traveling the Cosmos with Carter Emmart, One Last Time

https://www.nytimes.com/2025/06/13/science/astronomy-planetarium-amnh-carter-emmart.html
1•babushkaboi•47m ago•0 comments

Towards Understanding Sycophancy in Language Models

https://arxiv.org/abs/2310.13548
3•fzliu•1h ago•1 comments

How do you use business automation with AI?

https://chatgpt.com/g/g-683cc317abb08191bca3da9b36e9f008-master-business-automation-tools-mba-gpt
1•arcknighttech•1h ago•0 comments

Advent of Computing: Episode 159 – The Intel 286: A Legacy Trap

https://adventofcomputing.libsyn.com/episode-159-the-intel-286-a-legacy-trap
2•matt_d•1h ago•0 comments

The Irony of This Post

https://www.vibesec.app/
2•officialmoseti•1h ago•1 comments

Chapter 1 of Morris Chang's memoir, translated from Chinese

https://karinabao.substack.com/p/morris-changs-memoir-chapter-1-english
1•walz•1h ago•0 comments

Vision Transformers Don't Need Trained Registers

https://arxiv.org/abs/2506.08010
3•avd4292•1h ago•0 comments

It's 2025, But is it 1995 or 1998

https://ard.ninja/blog/2025-06-09-its-2025-but-is-it-1995-or-1998/
2•ardme•1h ago•0 comments

Mapping urban and rural British hedgehogs

https://anil.recoil.org/ideas/hedgehog-mapping
2•colinprince•1h ago•0 comments

Honda Japan confirms end of production of iconic Honda Civic Type R sports car

https://www.blanquivioletas.com/en/end-production-honda-civic-type-r-car/
4•teleforce•1h ago•0 comments

Trump's FTC may impose merger condition that forbids advertising boycotts

https://arstechnica.com/tech-policy/2025/06/trumps-ftc-targets-advertising-boycotts-in-potential-boost-for-elon-musks-x/
7•derbOac•1h ago•1 comments

Apache Fury Is Now Apache Fory

https://fory.apache.org/blog/fury_renamed_to_fory/
3•shscs911•1h ago•1 comments

Chinese AI outfits smuggle suitcases of hard drives to evade US chip

https://www.tomshardware.com/tech-industry/artificial-intelligence/chinese-ai-outfits-smuggling-suitcases-full-of-hard-drives-to-evade-u-s-chip-restrictions-training-ai-models-in-malaysia-using-rented-servers
1•toss1•1h ago•0 comments

Talk – Why Search Sucks (But First, a Brief History) [video]

https://www.youtube.com/watch?v=vZVcBUnre-c
1•kushal_goenka•1h ago•1 comments