C++ Shell TypeScript Objective-C++ JavaScript C Other
Latest commit 7700bb2 Jan 27, 2018
Permalink
Failed to load latest commit information.
3rdparty Minor. Jul 17, 2017
blocks Renaming, CC @sompylasar. Jan 21, 2018
bricks Typo fix. Jan 27, 2018
compact_tsv Fixed the build. Jul 17, 2017
contributors agserm signed CLA Jul 25, 2017
examples Merge branch 'stable' into replicate-to-a-fake-stream Jan 15, 2018
fncas Minor tweaks for Mac. Oct 6, 2017
integrations Lowercased `integrations/`. Jul 17, 2017
karl Making it compile. Jan 21, 2018
midichlorians Lowercasing `midichlorians`, may need a Mac OS touch. Jul 17, 2017
profiler Combined changes in master since the last merge into the stable. Jan 7, 2018
regression_tests/typesystem `git mv type_system typesystem` in `regression_tests`. Jul 17, 2017
ripcurrent Combined changes in master since the last merge into the stable. Jan 7, 2018
scripts Removed that compilation flag. Dec 28, 2017
storage Added `Has` to `OneToMany`. Jan 22, 2018
stream Hopefully the last fix. Jan 21, 2018
typesystem JSON support for `ImmutableOptional`. Jan 21, 2018
utils CR. Jul 17, 2017
.clang-format Trying l120 cols instead of 112 cols. Sep 7, 2016
.gitignore Moar Mac fixes. Oct 6, 2017
.travis.yml Travis msg. Jul 14, 2017
Current.vcxproj s/compacttsv/compact_tsv/g, edit the files. Jul 17, 2017
Current.vcxproj.filters s/compacttsv/compact_tsv/g, edit the files. Jul 17, 2017
Makefile Lowercasing the remaining dirs in `typesystem/`. Jul 17, 2017
README.md Added Semaphore's badge. Jan 4, 2018
Symbols.md s/Sherlock/stream/g re. internal. Jul 17, 2017
current.h Lowercasing the remaining dirs in `typesystem/`. Jul 17, 2017
port.h Re-running Travis, one line change reverted. Dec 5, 2017

README.md

Current Travis Semaphore

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 for FnCAS.
    • macOS: brew install nasm
  • geninfo from lcov for coverage report.
    • macOS: brew install lcov
  • clang-format-3.6 for code formatting (make indent).
    • macOS: Only clang-format-3.8 is available via Homebrew: 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 (pretend we've got 3.6)

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