Current
Current copied to clipboard
C++ framework for realtime machine learning.
Current

TypeSystem
The type system used in Current framework.
RipCurrent
The language to define continuous data pipelines.
Stream
Structured, append-only, immutable data persistence layer with publish-subscribe.
FnCAS
An efficient convex optimization engine.
CompactTSV
Low-level compact persistence layer with 1+ GB/s throughput.
EventCollector
An extensible event collecting HTTP server.
Blocks
HTTP server and client, efficient in-memory message queue, persistence layer, streaming API interface.
Bricks
JSON and binary serialization, string manipulation library, command line flags library, and other core pieces.
Storage
Storage layer with super easy to use in-memory data views and Stream-based persistence.
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.
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 [email protected] && ln -s /usr/local/bin/clang-format-3.6 /usr/local/opt/[email protected]/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