Planned features
The following features and enhancements are currently planned.
General
File system
Migrate from <boost/filesystem.hpp> to the standard library replacement <filesystem> once there is widespread support.
Testing
Improve test coverage and increase use case tests on each component (explicitly test functionality that is used elsewhere but not directly tested).
Error reporting
Improve exception messages and information provided at exception throwing sites.
Components
Application
Injector
- Investigate the viability of implementing automatic constructor selection, allowing injectable implementation classes to be written without the need for an injector macro.
- Improve dependency tree cycle error reporting.
- Improve dependency tree pretty printing.
- Improve the injector unit tests.
- Implement parallel construction of eager singletons, based on the dependency tree created during the validation phase of injector construction.
-
[non functional] Consider the possibility of compacting the injector macro implementations via some macro twiddling.
Environment
- Add documentation describing how to construct custom type specification hierarchies from existing type specification files.
- Consider the implementation of composite property arrays via multiple specification of the same composite property.
- Create a web application that serves environment configuration property specifications, given a list of type specification source files.
Command line parser
- Improve the help text printer.
Concurrent
- Determine how to add processing forking simulation for the Windows 7/10 platform and add the functionality to the Fork class.
- Determine which other useful (high level API) concurrent data structures are not available from the standard library / Boost libraries and implement.
Container
- Add more search algorithms to ObjectTrie.
- Add an efficient single process blocking queue implementation.
- Determine which other useful (high level API) containers are not available from the standard library / Boost libraries and implement.
Lang
- Extend the parser utilities classes to support incremental parsing.
Logging
- Create a threaded writer in order to offload writing to another thread.
Network
-
[non functional] Consider whether to migrate away from libcurl (i.e. write C++ SMTP handling and other handlers).
- Add features to the HTTP and HTTPS clients (start with chunked transfer and asynchronous API, redirects).
- Make HTTP server keep-alive configurable.
- Add TLS support to the HTTP server.
- Improve/add other features to the HTTP server (chunked transfer, etc.).
- Consider which other web application handlers would be useful.
- Analyse the performance of the HTTP server and determine how to improve performance.
- Create a more efficient regular expression algorithm/data structure for the redirecting HTTP web application.
Resource
- Add more resource types.
-
[non functional] Improve the resource documentation in the developer manual.
System
- Add more features to the clock API and the system clock implementation.
Testing
- Add test case serialisation via dependency keys.
- Integrate with common C++ unit test running frameworks.
Type
- Clean up / improve templated (typename AllocatorT) versions of the toString, toString16, and toString32 functions.
- Migrate fromString numeric conversions from c-string type strtol etc. to C++17 from_chars functions. This will avoid the need to allocate strings from string views.
Util
Compression
GZip
- Add functions that compress to std::vector<char>.
- Add functions that compress to std::ostream.
- Add functions that uncompress from a std::vector<char>.
- Add functions that uncompress from a std::istream.
Zipper/Unzipper
- Make the zip classes more feature complete.