C++ Shell TypeScript Objective-C++ JavaScript C Other
Clone or download
mzhurovich Merge pull request #830 from dkorolev/progress_tracker
Terminal colors and a progress tracker helper.
Latest commit 533dbc9 Jul 3, 2018
Permalink
Failed to load latest commit information.
3rdparty DFlags+GoogleTest tweak. Feb 11, 2018
blocks VT100 magic. Jul 3, 2018
bricks Fixing `make check`. Jul 1, 2018
compact_tsv Fixed the build. Jul 17, 2017
contributors agserm signed CLA Jul 25, 2017
examples Trying to please Travis, moving to clang++-4.0. Jul 1, 2018
fncas Made use of the `::system()` wrapper. May 6, 2018
integrations Lowercased `integrations/`. Jul 17, 2017
karl Fixing `make check`. Jul 1, 2018
midichlorians Lowercasing `midichlorians`, may need a Mac OS touch. Jul 17, 2017
nlp Fixed more lambda warnings throughout the sources. Jun 23, 2018
profiler CR. Apr 15, 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 Added `scripts/install-gcc-on-semaphore.sh`. Jul 1, 2018
storage Merge branch 'stable' into master-flip-over-http Jun 30, 2018
stream Merge branch 'stable' into master-flip-over-http Jun 30, 2018
typesystem Extended `CURRENT_VARIANT` to accept a type list as well, not just a … May 27, 2018
utils Made use of the `::system()` wrapper. May 6, 2018
.clang-format Trying l120 cols instead of 112 cols. Sep 7, 2016
.gitignore Top-level `.gitignore` cleanup. May 15, 2018
.travis.yml No clang 4.0 on Travis, trying 3.8. Jul 2, 2018
Current.vcxproj Making Current `std::tuple<>`-friendly. Mar 26, 2018
Current.vcxproj.filters Making Current `std::tuple<>`-friendly. Mar 26, 2018
Makefile Cleaner `make clean`. Mar 26, 2018
README.md Same badge design for Semaphore as for Travis. Jun 13, 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 Hid PATCH support behind an `#ifdef`. Apr 9, 2018

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