- LibJuno GitHub
- LibJuno is a lightweight C99 library designed specifically for embedded systems.
- LibJuno enables embedded systems developers to utilize dependency injection within C99 in a memory-safe manner
- LibJuno provides essential functionalities like memory management and more all without dynamic memory allocation!
- LibJuno optimizes for memory safety, determinism and efficiency in constrained environments.
- LibJuno is compiled without the standard library to maximize portability.
- By default, LibJuno will compile both a shared and static library
- LibJuno is aims to minimze dependencies, including dependencies on the C standard library
- Dependencies of LibJuno are listed here
- This does not include dependencies on compilers or build scripting/tooling
Dependency Name | Rationale |
---|---|
<math.h> | Math is required for math lib |
- Generate build files:
cmake -B build .
- Compile the project:
make -C build
- Run unit-tests:
cmake -B build . -DJUNO_TESTS=ON
make -C build
cd build
ctest
-DJUNO_TESTS=On
(DefaultOff
): Enable unit testing-DJUNO_COVERAGE=On
(DefaultOff
): Compile Juno with code coverage-DJUNO_DOCS=On
(DefaultOff
): Enable doxygen docs-DJUNO_PIC=On
(DefaultOn
): Compile Juno with Position Independent Code-DJUNO_SHARED=On
(DefaultOff
): Compile the juno shared library
- Memory Management: Provides block-based allocation, deallocation, and memory tracking.
- String Operations: Handles string initialization, manipulation, concatenation, and cleanup.
- Filesystem interactions
- Networking support
- Additional utility libraries for embedded applications
Juno is the name of my wonderful dog and she has brought me so much comfort and stability throughout the years. I wanted to honor her legacy by naming an open-source library after her.