π A collection of optimized C++ libraries for Arduino and embedded systems
All libraries are located under the lib folder. For best results, open the parent folder containing this README.md to access the full project.
- π The
srcfolder contains the main project file (main.cpp) for testing libraries. - π§ͺ The
Testfolder allows unit testing using the Unity framework. Enable it inplatformio.iniwhen needed. - π Each library has its own README file with setup instructions.
- π Some libraries are also available on Arduino Library Manager. See the list below for version details.
If you find these libraries useful, consider supporting me:
π Donate via GoFundMe
π° Click the Sponsor Button at the top of this repository!
- Patreon: Support on Patreon
- Kofi: Support on Kofi
- Venmo: Support on Venmo
- Brayden Anderson (Developer)
Most libraries are [PARTIALLY-TESTED] or [MOSTLY-TESTED]. Even [STABLE] libraries may contain unknown bugs. If you encounter issues, please report them on this repository.
β Note: Some libraries have different published names. For example:
- Properties β Published as SimpleProperties
- iostream β Published as BasicIOStream
π [Development Branch]: Libraries here are in active development and may not compile. Use main branch versions for stable releases.
- Dictionary [DEVELOPMENT-COMPLETE] (PURE VIRTUAL : No Concrete Implementation in this Library), [TESTING-NOT-NECESSARY],[IMPLEMENTED IN ANOTHER LIBRARY]
- Hashtable [PASSIVE-DEVELOPMENT], [TESTED], [STABLE]
- iostream [PASSIVE-DEVELOPMENT] (Published as : BasicIOStream), [PARTIALLY-TESTED], [STABLE]
- iterator [DEVELOPMENT-COMPLETE], (PURE VIRTUAL : No Concrete Implementation in this Library) [TESTING-NOT-NECESSARY]
- Properties [PASSIVE-DEVELOPMENT] (Published as : SimpleProperties), [MOSTLY-TESTED], [STABLE]
- SimpleVector [PASSIVE-DEVELOPMENT] , [TESTED], [STABLE]
- Timer [PASSIVE_DEVELOPMENT] (Published as : SimpleArduinoTimer), [MOSTLY-TESTED], [SEMI-STABLE]
- UnorderedMap [PASSIVE-DEVELOPMENT], [PARTIALLY-TESTED], [STABLE]
- LinkedList [PASSIVE-DEVELOPMENT] (Published as : BasicLinkedList), [PARTIALLY-TESTED], [STABLE]
- DoubleLinkedList [PASSIVE-DEVELOPMENT], [PARTIALLY-TESTED], [STABLE]
- MyDictionary [ACTIVE-DEVELOPMENT],(implemented Version of the Dictionary Class), [UNTESTED]
- SDList [PASSIVE-DEVELOPMENT], [REIMPLEMENTED], [MOSTLY-TESTED], [UNSTABLE]
- ArrayList [PASSIVE-DEVELOPMENT], [TESTED], [STABLE]
- SimpleMutex [ACTIVE-DEVELOPMENT]
- SimpleThreadManager [ACTIVE-DEVELOPMENT]
- Operators [PASSIVE-DEVELOPMENT], [STABLE]
- Predicates [PASSIVE-DEVELOPMENT], [STABLE]
- TypeTraits [PASSIVE-DEVELOPMENT], [STABLE]
- Numeric_Limits [PASSIVE-DEVELOPMENT], [STABLE]
- Map [ACTIVE-DEVELOPMENT], [STABLE], [PARTIALLY-TESTED]
- Queue [PASSIVE-DEVELOPMENT], [STABLE]
- Stack [PASSIVE-DEVELOPMENT], [STABLE]
- MatrixMath [PASSIVE-DEVELOPMENT], [UNTESTED]
- MathLib [PASSIVE-DEVELOPMENT], [UNTESTED]
- ColorManager [PASSIVE-DEVELOPMENT], [UNTESTED]
- InitializerList [PASSIVE-DEVELOPMENT], [UNTESTED]
- Optional [ACTIVE-DEVELOPMENT], [MOSTLY-TESTED]
- Variant [ACTIVE-DEVELOPMENT], [MOSTLY-TESTED]
- ExtremeVariant [ACTIVE-DEVELOPMENT], [MOSTLY-TESTED]
Total Available Libraries: (45) Total Libraries: (51)
| Library | Status | Notes |
|---|---|---|
| Dictionary | β DEVELOPMENT-COMPLETE | Pure Virtual (No Concrete Implementation) |
| Hashtable | π PASSIVE-DEVELOPMENT | β TESTED, π STABLE |
| SimpleVector | π PASSIVE-DEVELOPMENT | β TESTED, π STABLE |
| ArrayList | π PASSIVE-DEVELOPMENT | β TESTED, β SEMI-STABLE |
| Timer | π PASSIVE-DEVELOPMENT | β MOSTLY-TESTED, β SEMI-STABLE |
| LinkedList | π PASSIVE-DEVELOPMENT | β PARTIALLY-TESTED, π STABLE |
| UnorderedMap | π PASSIVE-DEVELOPMENT | β PARTIALLY-TESTED, π STABLE |
| Stack | π PASSIVE-DEVELOPMENT | β TESTED, π STABLE |
| Queue | π PASSIVE-DEVELOPMENT | β TESTED, π STABLE |
| Operators | π PASSIVE-DEVELOPMENT | β TESTED, π STABLE |
| Predicates | π PASSIVE-DEVELOPMENT | β TESTED, π STABLE |
| Library | Status | Notes |
|---|---|---|
| MyDictionary | π§ DEVELOPMENT-PAUSED | β UNTESTED |
| SimpleMutex | π§ DEVELOPMENT-PAUSED | β UNTESTED |
| SimpleThreadManager | π§ DEVELOPMENT-PAUSED | β UNTESTED |
| JSON | π₯ ACTIVE-DEVELOPMENT | π§ UNPUBLISHED |
| MemoryManager | π₯ ACTIVE-DEVELOPMENT | π§ UNPUBLISHED |
| Optional | π₯ ACTIVE-DEVELOPMENT | β MOSTLY-TESTED |
| Variant | π₯ ACTIVE-DEVELOPMENT | β MOSTLY-TESTED |
| ExtremeVariant | π₯ ACTIVE-DEVELOPMENT | β MOSTLY-TESTED |
| DynamicStorage | π₯ ACTIVE-DEVELOPMENT | π§ IN PROGRESS |
π§ These libraries are under active testing:
- MatrixMath π§ TESTING-PAUSED
- MathLib π§ TESTING-PAUSED
- JSON π₯ ACTIVELY-TESTING
- Optional π₯ ACTIVELY-TESTING
- Variant π PASSIVE-TESTING
- ExtremeVariant π₯ ACTIVELY-TESTING
- ArrayList π PASSIVE-TESTING
- SimpleVector π PASSIVE-TESTING
π’ These libraries are not yet available but are under active development:
| Library | Status |
|---|---|
| SimpleMutex | π§ DEVELOPMENT-PAUSED, β UNPUBLISHED |
| SimpleThreadManager | π§ DEVELOPMENT-PAUSED, β UNPUBLISHED |
| OrderedMap | π₯ ACTIVE-DEVELOPMENT, β UNPUBLISHED |
| JSON | π₯ ACTIVE-DEVELOPMENT, β UNPUBLISHED |
| STRING | π₯ ACTIVE-DEVELOPMENT, β UNPUBLISHED |
| MemoryManager | π₯ ACTIVE-DEVELOPMENT, β UNPUBLISHED |
| ExtremeVariant | π₯ ACTIVE-DEVELOPMENT, β UNPUBLISHED |
| DynamicStorage | π₯ ACTIVE-DEVELOPMENT, β UNPUBLISHED |
- ArrayList
[ON-PAR] - SimpleVector
[ON-PAR] - Hashtable
[ON-PAR] - Properties (SimpleProperties)
- Timer (ArduinoTimer)
- LinkedList (ArduinoLinkedList)
- UnorderedMap
- DoubleLinkedList (ArduinoDoubleLinkedList)
- SDList (Arduino SDList)
[ON-PAR] - Optional (Will be synced between Versions shortly (made a mistake))
- Variant
[ON-PAR]
π Found a bug? Have a question? Open an issue on GitHub!
π‘ Want to contribute? Fork the repository and submit a pull request with your changes.
- Libraries marked as
[ON-PAR]have the same version in Arduino Library Manager and PlatformIO. - If a library is not
[ON-PAR], the Arduino version may be outdated. Updates on PlatformIO happen first due to ease of deployment.
π Happy coding & thank you for using my libraries! π
π GoFundMe - Support My Work!
π Patreon - Support My Work!
π Platformio Registry
π GitHub Repository
π Arduino Library Manager
π Updated: 01/29/2025 09:08 PM Mountain Time
| Library Name | Position | Downloads MTD | Total Downloads |
|---|---|---|---|
| ArrayList | 1,186 | 22 | 178 |
| Dictionary | 14,128 | 0 | 16 |
| SimpleArduinoTimer | 3,947 | 2 | 16 |
| UnorderedMap | 3,952 | 2 | 46 |
| SimpleProperties | 3,948 | 2 | 46 |
| Iterator | 3,949 | 2 | 25 |
| BasicIO | 1,679 | 12 | 360 |
| SDList | 3,951 | 2 | 12 |
| Hashtable | 1,375 | 17 | 189 |
| SimpleVector | 1,259 | 21 | 247 |
| MyDictionary | 14,136 | 0 | 3 |
| Operators | 14,221 | 0 | 15 |
| Predicates | 14,222 | 0 | 15 |
| BasicLinkedList | 2,818 | 4 | 20 |
| DoubleLinkedList | 3,250 | 3 | 21 |
| TypeTraits | 3,980 | 2 | 28 |
| AVLTree | 14,422 | 0 | 4 |
| BinarySearchTree | 14,423 | 0 | 4 |
| BinaryTree | 14,424 | 0 | 4 |
| B+ Tree | 14,425 | 0 | 4 |
| B Tree | 14,426 | 0 | 4 |
| ColorManager | 14,427 | 0 | 5 |
| FenwickTree | 14,428 | 0 | 4 |
| HeapTree | 14,429 | 0 | 4 |
| InitializerList | 1,379 | 18 | 217 |
| IntervalTree | 14,430 | 0 | 4 |
| KDimensionalTree | 14,431 | 0 | 4 |
| MathLib | 3,982 | 2 | 21 |
| Map | 2,726 | 1 | 38 |
| MatrixMath | 14,444 | 0 | 4 |
| Numeric_Limits | 3,983 | 2 | 25 |
| OCTree | 14,432 | 0 | 4 |
| QuadTree | 14,436 | 0 | 4 |
| Queue | 14,437 | 0 | 5 |
| RedBlackTree | 14,438 | 0 | 4 |
| RTree | 14,439 | 0 | 4 |
| SegmentTree | 14,440 | 0 | 4 |
| Stack | 14,441 | 0 | 6 |
| SuffixTree | 14,442 | 0 | 4 |
| TrieTree | 14,443 | 0 | 4 |
| Optional | [NEW] | 0 | 0 |
| Variant | [NEW] | 0 | 0 |
| ExtremeVariant | [NEW] | 0 | 0 |
| Status | Meaning |
|---|---|
| [TESTED] | Library has been tested and found to operate as intended (newer updates may not actually be tested) |
| [PARTIALLY-TESTED] | Library has had some tests completed, the library could still be unstable |
| β [MOSTLY-TESTED] β | Similar to partially tested, most functions have been tested. (main functions) |
| [UNTESTED] | If I have to explain this to you, you got problems ;) Library has not been tested |
| β [UNPUBLISHED] β | The library is only on github. This is usually a temporary tag. |
| [DEVELOPMENT-COMPLETE] | I have no intention to further develop library. (will fix bugs) |
| π₯ [ACTIVE-DEVELOPMENT] π₯ | Actively working on library. Enhancements, bug fixes, ext. |
| π [PASSIVE-DEVELOPMENT] π | Resevered for libraries that I have plans for, but am not working on currently |
| π§ [DEVELOPMENT-PAUSED] π§ | Development is no longer a priority, and the Development will not be progressed |
| π§ [TESTING-PAUSED] π§ | Testing is no longer a priority, and at this time will not be continued. |
| π [STABLE] π | Library should work as intended and shouldnt give any trouble. |
| [CONSIDERED-STABLE] | Library hasnt been fully tested, but the vast majority of the functions seem to work fine with no issues |
| β [SEMI-STABLE] β | Library has some aspects that are stable, but others that may not be stable |
| [UNSTABLE] | Testing is showing that a library is not working properly. Even though a library is not labled with this, please consider all libraries on the Development-Branch to be Unstable. Some libraries on main may also be unstable if it had to be merged early. |
| [REIMPLEMENTED] | Library was rebuilt from the ground up. Functionality may have changed |
| [TESTING-NOT-NECESSARY] | Library is Virtual and has no concrete implementation |
| [ON-PAR] | Means the Arduino Current Version and the Platformio Current Version are the same. This is not always true, so this label is used to show that they are currently in sync. Absense of this label should be taken as the library versions are not identical. |
| π§ [IN-PROGRESS] π§ | Essentially this and Active development are the same. However this means this library is priority |