This repository is currently unmaintained and will not see further development here.
Atria is a toolkit for modern C++ development.
It provides core components that extend the standard library capabilities. It provides various libraries of general interest, in the spirit of the STL, Boost, Adobe Source Libraries, or Facebook's Folly and Fatal.
This is an open source project. You're encouraged to use it, modify it, and redistribute it.
Atria is written in standard C++11 and compiles with recent versions of GCC and Clang.
This project is under active development and its API is not stable yet. Thus it is not suitable for most production systems. However it is thoroughly tested, and we encourage you to try it. Your feedback is very welcome.
-
atria::prelude
provides basic functional programming tools in the spirit of those in Clojurecore
and Haskell'sPrelude
. -
atria::variant
provides tools for better usability of Boost.Variant and Eggs.Variant and is customizable to other sum type implementations. -
atria::meta
provides several metaprogramming tools, including some Boost.MPL adaptors for several variadic types and concept checking facilities. -
atria::estd
provides C++11 compatible implementations of some C++14 and beyond standard library components. -
atria::xform
provides an efficient C++ implementation of transducers, a concept introduced in Clojure by Rich Hickey. -
atria::funken
provides a experimental library for writing epochal and functional data-models. -
atria::testing
provides testing tools and frameworks for writing spies, mocks, micro-benchmarks and more.
Reference documentation can be browsed here.
It can be generated by executing in the project directory: doxygen doxy/doxygen.config
-
CppCon 2015: Transducers, from Clojure to C++
Slides (HTML), Video (YouTube), Podcast (CppCast) -
Berlin C++ User Group: Modernize your C++!
Slides (HTML)
- boost
- googletest (for testing only)
Other dependencies are vendored via submodules. Make sure to run git submodule update --init --recursive
before building.
Atria is distributed under the MIT license (see LICENSE).
Copyright (c) 2014, 2015 Ableton AG, Berlin
Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.