C5T / Current
Projects that are alternatives of or similar to 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
-
nasm
forFnCAS
.-
macOS:
brew install nasm
-
macOS:
-
geninfo
fromlcov
for coverage report.-
macOS:
brew install lcov
-
macOS:
-
clang-format-3.6
for code formatting (make indent
).-
macOS: Only
clang-format-3.8
is available via Homebrew:brew install [email protected] && ln -s /usr/local/bin/clang-format-3.6 /usr/local/opt/[email protected]/bin/clang-format
(pretend we've got 3.6)
-
macOS: Only
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