libostd/README.md

52 lines
2.4 KiB
Markdown
Raw Normal View History

2015-04-04 21:12:10 +02:00
# octastd
2015-04-06 00:10:44 +02:00
2017-01-14 15:09:27 +01:00
OctaSTD is an extension of the C++14 standard library which mainly provides
ranges (to replace iterators) but also various other utilities like proper
streams, string formatting, concurrency utilities and others. It's meant
to replace the more poorly designed parts of the C++ standard library to
make the language easier and more convenient to use.
2015-04-23 19:47:33 +02:00
2015-05-18 03:13:16 +02:00
Documentation for OctaSTD can be found at https://wiki.octaforge.org/docs/octastd.
2016-01-12 19:33:46 +01:00
Full C++14 support is required in your compiler.
2015-04-23 19:47:33 +02:00
## Supported compilers
Compiler | Version
-------- | -------
gcc/g++ | 5.4+, 6+
clang | 3.8+ (most platforms including LLVM for macOS), 8.0.0+ (macOS Xcode)
2015-04-23 19:47:33 +02:00
2016-01-12 19:33:46 +01:00
Other C++14 compliant compilers might work as well. OctaSTD does not utilize
2017-01-14 15:09:27 +01:00
compiler specific extensions.
2016-01-12 19:33:46 +01:00
While Clang 3.6 does implement a sufficient level of C++14 support, it suffers
2016-07-08 20:53:40 +02:00
from a bug in its variable template implementation that prevents OctaSTD from
2016-01-12 19:33:46 +01:00
functioning. Therefore version 3.8 or higher is necessary (where this bug was
finally fixed).
GCC has implemented a sufficient feature level of C++14 since version 5.1, but
2016-07-08 20:53:40 +02:00
also is too buggy until version 5.4. Version 5.1 and 5.2 have variable template
partial specialization issues and version 5.3 has an internal compiler error
triggered by the tuple implementation. Version 5.4 appears to be the first one
to compile this without issues. GCC 6.1 also appears to compile without problems.
MSVC++ is unsupported and for the time being will remain unsupported. As of MS
Visual Studio 2017 RC, basic C++11 features are still broken and prevent usage
of the library, with no reasonable workarounds. I will be testing new versions
as they get released and mark it supported as soon as it actually works, but no
active effort will be put towards making it work. On Windows, you're free to
use GCC/Clang or if you need the Visual Studio environment, the Visual Studio
version of Clang with MS Codegen should work just fine.
2015-09-09 20:51:33 +02:00
## Supported operating systems
2017-01-14 15:09:27 +01:00
Currently supported OSes in OctaSTD are Linux, FreeBSD, macOS and Windows. Other
systems might work as well, as long as a sufficient compiler is provided.
2015-09-09 20:51:33 +02:00
MacOS support requires Xcode 8 or newer to work (or alternatively, official
LLVM distribution for macOS or any supported compiler from other channels
such as Homebrew). That is the first version to ship a Clang 3.8 based
toolchain, so things will not compile with an older version of Xcode.
2017-01-14 15:09:27 +01:00
Windows support includes MinGW, Clang and soon MSVC++.