NebulaStream is our attempt to develop a general-purpose, end-to-end data management system for the IoT. It provides an out-of-the-box experience with rich data processing functionalities and a high ease-of-use.
NebulaStream is a joint research project between the DIMA group at TU Berlin and BIFOLD.
Learn more about Nebula Stream at https://www.nebula.stream or take a look at our documentation.
We use clang-format and clang-tidy to ensure code quality and consistency.
To run the checks, you can use the target format.
NebulaStream targets C++23 using all features implemented in both libc++ 19 and libstdc++ 14. All tests are using
Clang 19.
Follow the development guide to learn how to set up the development environment.
To see our code of conduct, please refer to CODE_OF_CONDUCT.
This project supports multiple build types to cater to different stages of development and deployment. Below are the details of each build type:
- Default Logging Level: All logging messages are compiled.
- Assert Checks: Enabled.
- Use Case: Ideal for development, providing comprehensive logging and assert checks to help identify and fix issues.
- Default Logging Level: Warning.
- Assert Checks: Enabled.
- Use Case: Balances performance and debugging, including warning-level logging and assert checks for useful debugging information without full logging overhead.
- Default Logging Level: Error.
- Assert Checks: Enabled.
- Use Case: Optimized for performance, with logging set to error level and assert checks disabled, ensuring only critical issues are logged.
- Logging Level: None.
- Assert Checks: Disabled.
- Use Case: Designed for maximum performance, omitting all logging and assert checks, including null pointer checks. Suitable for thoroughly tested environments where performance is critical.
- Use this with care, as this is not regularly tested, i.e., Release terminates deterministically if a bug occurs (failed invariant/precondition), whereas Benchmark will be in an undefined state.