Current
C++ framework for realtime machine learning.
Install / Use
/learn @C5T/CurrentREADME
Current

As of April 2024, Current has seen 1000 pull requests. And counting!
cmake
As of 2024, we are making Current more cmake-friendly.
The core paradigms of Current stay the same, namely:
- Make it easy to develop in C++ with current.
- The code should be self-explicable and hard to make a mistake in.
In practical terms, the trasition to cmake means even easier integration for user code. For an example, consider this one. The TL;DR: on how to start a Current-first C++ project in a few minutes is:
- Start a repository.
- Grab the
Makefileinto its root cirectory, copying it fromC5T/Current/stable/cmake/Makefile. - Add a
.gitognorefile, with ``CMakeLists.txt,current/,googletest/, and.current/+.current_debug/`. - Put your
*.ccsource files undersrc/, and - Just
makewould do the job.
This approach is a bit unorthodox, since it invokes make to run a cmake-based build. On the other hand, this default Makefile will grab the latest CMakeLists.txt from C5T/Current, this default Makefile offers all the standard debug/release/clean/test targets, including a few other useful ones such as fmt, and this default Makefile makes vim the natural IDE of choice for C++ projects! =)
Components
TypeSystem
The type system used in Current framework. Built in reflection (even for templates!) while staying compatible with the native C++ data structures.
Bricks
JSON and binary serialization, string manipulation library, command line flags library, low-level system wrappers, and other core pieces.
Blocks
HTTP server and client, efficient in-memory message queue, persistence layer, streaming API interface.
Stream
Structured, append-only, immutable data persistence layer with publish-subscribe.
Storage
Super easy to use in-memory transactional object store with Stream-based persistence. Simple pub-sub powered distributed system scaling via eventually consistent read-only replicas.
Type Evolution
Compact and autogenerated C++ framework to evolve objects from one type hierarchy into another type hierarchy while remaining fully within the strong typing paradigm.
RipCurrent
The language to define continuous data pipelines.
FnCAS
An efficient convex optimization engine.
CompactTSV
Low-level compact persistence layer with 1+ GB/s throughput.
EventCollector
An extensible event collecting HTTP server.
Contribution
Welcome, contributors! Please start here by signing the CLA.
Quick Start
Install the development dependencies
nasmforFnCAS.- macOS:
brew install nasm
- macOS:
geninfofromlcovfor coverage report.- macOS:
brew install lcov
- macOS:
clang-format-10for code formatting (make indent).- TODO(dkorolev) On macOS no
clang-format-3.6was availably, and the trick was to useclang-format-3.8and symlink it:brew install clang-format@3.8 && ln -s /usr/local/bin/clang-format-3.6 /usr/local/opt/clang-format@3.8/bin/clang-format, double-checking.
- TODO(dkorolev) On macOS no
Clean the output of the previous builds
make clean
Run the tests
Builds and runs all the tests as a single binary. Slow, eats up tons of CPU, but measures coverage.
Consider make individual_tests or make test within individual directories to run the subset of tests.
make test
Builds and runs the tests for each module separately:
make individual_tests
Builds and runs the tests for one of the modules (e.g. blocks/http):
(cd blocks/http && make test)
Verify the code
"Builds" all header files individually, twice each header file, and "links" these pairs together. Ensures no symbols are exported, and the ODR will not be violated when linking together two objects, each of which is independently using Current.
make check
Related Skills
YC-Killer
2.7kA library of enterprise-grade AI agents designed to democratize artificial intelligence and provide free, open-source alternatives to overvalued Y Combinator startups. If you are excited about democratizing AI access & AI agents, please star ⭐️ this repository and use the link in the readme to join our open source AI research team.
best-practices-researcher
The most comprehensive Claude Code skills registry | Web Search: https://skills-registry-web.vercel.app
groundhog
398Groundhog's primary purpose is to teach people how Cursor and all these other coding agents work under the hood. If you understand how these coding assistants work from first principles, then you can drive these tools harder (or perhaps make your own!).
isf-agent
a repo for an agent that helps researchers apply for isf funding
