xmake
tigerbeetle
Our great sponsors
xmake | tigerbeetle | |
---|---|---|
162 | 44 | |
8,592 | 6,534 | |
2.4% | 45.5% | |
9.9 | 9.9 | |
4 days ago | 6 days ago | |
Lua | Zig | |
Apache License 2.0 | Apache License 2.0 |
Stars - the number of stars that a project has on GitHub. Growth - month over month growth in stars.
Activity is a relative number indicating how actively a project is being developed. Recent commits have higher weight than older ones.
For example, an activity of 9.0 indicates that a project is amongst the top 10% of the most actively developed projects that we are tracking.
xmake
-
An Introduction to Modern CMake
My usual comment shilling for xmake in any build system conversation, that's how much I like it : https://xmake.io/#/
There are other installation methods : https://xmake.io/#/guide/installation?id=macos
It's in the official Fedora and Arch repos and there is ppa for Ubuntu
-
How to Structure C Projects: These Best Practices Worked for Me
In recent times I prefer Xmake[0] to CMake.
[0] https://xmake.io
-
I just want to say I love Rust
I really like xmake for c++, not very similar to cargo but then c++ isn't very similar to rust.
- Xmake v2.7.8 released, Improve package virtual environment and build speed
-
Build Systems for C++
I recommend xmake
you can try xmake. https://github.com/xmake-io/xmake
-
What is your preferred cross-platform project building tool for C and why?
xmake nothing comes close
-
Stop Comparing Rust to Old C++
C++ now also has many more modern tools, such as Xmake
tigerbeetle
- Factor is faster than Zig
-
The Raft Consensus Algorithm
Maelstrom [1], a workbench for learning distributed systems from the creator of Jepsen, includes a simple (model-checked) implementation of Raft and an excellent tutorial on implementing it.
Raft is a simple algorithm, but as others have noted, the original paper includes many correctness details often brushed over in toy implementations. Furthermore, the fallibility of real-world hardware (handling memory/disk corruption and grey failures), the requirements of real-world systems with tight latency SLAs, and a need for things like flexible quorum/dynamic cluster membership make implementing it for production a long and daunting task. The commit history of etcd and hashicorp/raft, likely the two most battle-tested open source implementations of raft that still surface correctness bugs on the regular tell you all you need to know.
The tigerbeetle team talks in detail about the real-world aspects of distributed systems on imperfect hardware/non-abstracted system models, and why they chose viewstamp replication, which predates Paxos but looks more like Raft.
[1]: https://github.com/jepsen-io/maelstrom/
[2]: https://github.com/tigerbeetle/tigerbeetle/blob/main/docs/DE...
- Fastest Branchless Binary Search
-
CWE Top Most Dangerous Software Weaknesses
> There is no reason to use a memory unsafe language anymore, except legacy codebases, and that is also slowly but surely diminishing. I'm still yet to hear this amazingly compelling reason that you just need memory unsafe languages. In terms of cost/benefits analysis, memory unsafety is literally all costs.
Tell that to the authors of new memory unsafe languages (like Zig) and creators of new project in those languages (like https://tigerbeetle.com) :(
- Problems of C, and how Zig addresses them
- File for Divorce from LLVM
-
Zap – fast back ends in Zig
Seeing this, and the use of zig for https://github.com/tigerbeetledb/tigerbeetle I wonder if zig might become a good tradeoff vs rust for servers if in long term it's more readable and maintainable and with a different approach to quality.
I would also be interested to hear the compile time, binary size and memory usage of those example apps.
Looks like the underlying facil.io library hasn't seen any commits since 2021, so that's a bit of a red flag. https://github.com/boazsegev/facil.io
-
Significant examples of Zig software (June 2023)?
About three years ago, we had a thread called "Significant examples of Zig software?". Some time has passed, and there have been fairly large Zig code bases that have surfaced since, such as TigerBeetle (cc /u/eatonphil), or adoption at places like Uber.
-
I think Zig is hard but worth it
This is basically what I've come to do in the Zig scripts I write at work.
It took a bit of getting used to when I joined but we agreed as a team to have all meaningful scripts written in Zig not bash (for one, bash doesn't work on Windows without WSL and we need to support Windows builds/testing/etc.).
It makes about as much sense as any other cross-platform scripting option once I got used to it!
Some examples:
Docs generation: https://github.com/tigerbeetledb/tigerbeetle/blob/main/src/c...
Integration testing sample code: https://github.com/tigerbeetledb/tigerbeetle/blob/main/src/c...
Running a command wrapped in a TigerBeetle server run: https://github.com/tigerbeetledb/tigerbeetle/blob/main/src/c...
What are some alternatives?
meson - The Meson Build System
conan - Conan - The open-source C and C++ package manager
cmake-init - The missing CMake project initializer
imgui - Dear ImGui: Bloat-free Graphical User interface for C++ with minimal dependencies
ninja - a small build system with a focus on speed
wxWidgets - Cross-Platform C++ GUI Library
xtd - Free open-source modern C++17 / C++20 framework to create console, GUI (forms like WinForms) and unit test applications and libraries on Microsoft Windows, Apple macOS and Linux.
sciter - Sciter: the Embeddable HTML/CSS/JS engine for modern UI development
GTK+ - Read-only mirror of https://gitlab.gnome.org/GNOME/gtk
CPM.cmake - 📦 CMake's missing package manager. A small CMake script for setup-free, cross-platform, reproducible dependency management.
FTXUI - Features: - Functional style. Inspired by [1] and React - Simple and elegant syntax (in my opinion). - Support for UTF8 and fullwidth chars (→ 测试). - No dependencies. - Cross platform. Linux/mac (main target), Windows (experimental thanks to contributors), - WebAssembly. - Keyboard & mouse navigation. Operating systems: - linux emscripten - linux gcc - linux clang - windows msvc - mac clang
Vcpkg - C++ Library Manager for Windows, Linux, and MacOS