Please see Semantic Versioning on Github for more details on managing the
CHANGES.mdfile.
- Updated all libraries to CMSDK 2.0
- Fix some build issues with macOs and
#define __link - Fixed some C++ build issues on macOs with
File::ioctl()
- None yet
- WARNING: There are some breaking changes. These were either bug-prone or safety concerns
- Removed
FileObject::write(void * buffer, size_t size)useFileObject::write(var::View view) - Removed
FileObject::read(void * buffer, size_t size)useFileObject::read(var::View view) - Fixed spelling of
delimiterinvar::Tokenizer(wasdelimeter) - Use api::Function with api::ProgressCallback instead of
contextandcallback- This is a much safer alternative (really more of a bug fix)
- Removed
FileObject::ioctl(const Ioctl&)useFileObject::ioctl(int request, Type * type) fs::LambdaFileusingapi::Functionrather than a c-style function pointercontextwas passed but now must be captured in the lambda
- Removed
fs::FileObject::gets()usefs::FileObject::get_line() - Use
api::Functionfor thefs::FileSystem::ExcludeCallback Test::initializeis now part ofTest::Scopeto guarantee the existence of a printer
- Removed
- Pass a lambda to
printer::Printer::Objectto execute inside an object scope - Pass a lambda to
printer::Printer::Arrayto execute inside an object scope - Add
var::Tokenizer::DelimiterType::ordered_charactersto tokenize with an ordered set of characters- For example:
1+2=3can tokenize with+=and get1,2, and3.
- For example:
- Add
var::Tokenizer::DelimiterType::ordered_stringsto tokenize with an ordered set of strings- For example:
1+=2==3can tokenize with|+=|==and get1,2, and3. - The first character in the
delimitersis the one character delimiter for the strings in the set
- For example:
- Add
operator bool()tothread::Condto check if the condition is asserted - Separate
var::StackStringlogic from the template - Added
rvaluereference functions for some function-chained member functions - Escape characters that are printed within quotes with
printer::Printer::print() - Add
is_character_wisetovar::ReplaceStringwhich replaces each character inold_string - Add
StringView::pop_encapsulated()which will get a substring after the encapsulation - Add
StringView::get_encapsulatedto find encapsulated tokens in a string - Add option to execute threads with a lambda
- Add ignore between
(){}[]<>tovar::Tokenizer- Also handles recursive symbols
${${test}}
- Also handles recursive symbols
- Add
var::Base64::is_valid()to check to see if a string view is valid Base64 - Add
var::OrderedSet,var::UnorderedSet,var::OrderedMultisetandvar::UnorderedMultiset - Update
var::Tokenizerto support delimiters as characters or as a single string - Add additional functions and documentation to
var::StringView- Strip trailing whitespace
- Strip leading whitespace
- Truncate a string view
contains_any_offor both finding characters and strings (using a template)
- Use
cmsdk2_functions for build
- Fix build warning on Linux with
sys::System::launch_browswer() - Fixed
var::Ringand added unit tests - Make
var::StringView::pop_front(), pop_back(), and truncate()safe (checks length) fs::FileObjectusessize_tfor size- Fixed
Printer::traceto never truncate - Fixed a bug with
var::StringView::find_last_not_ofassigning the end position to0. - Fixed a bug with
fs::FileObject::get_line() - Fixed a build error with the
VarAPIUnit test - Fixed crashing bug with multi-threaded apps and error handling
- Fixed bug with
sys::Processwherethread.cancel()was causing a crash - Fixed a build error with
var::Stack
- Updated CMake files to use CMakeSDK v2.0 or greater
- Add
magic_enumtoVarAPIto convertenum classto/from string and to iterate all values
- Remove unused member from
fs::Path - Make
fs::Pathastaticonly class (cannot be constructed) - Fixed a regression error with
fs::LocationScope
- Add
ActionFlagsfor signals on linux - Add
operator bool()tovar::StringViewto check for non-empty strings - Add
operator bool()tovar::StackStringto check for non-empty strings - Build
mq_*on linux and link tortlibrary - Make dummy
sys::launch_browser()available in Stratify OS - Support move with
var::Vector::push_back() - Add
api::UniquePointeras alias ofstd::unique_ptr
- Removed superfluous cmake code from tests
- Use smart pointers in implementation of
api::Demanlger - Fix a bug that allows
fs::FileMemberAccessto be moved properly - Fixed a bug when truncating
var::StackStringobjects sys::Sys::Processneeds to initializem_processon windows- Use
gettimeofdayforClockTimeon Linux - Fix build problem with undefined reference to
atofon Stratify OS - add
var/StackString.hppinclude tosys/Cli.hppto prevent some build errors
- Add
var::Listas a wrapper forstd::list - Add
var::ContainerObjectas the base to container classes- Provides more access to algorithms. Allows for easier iteration.
- Add
api::SystemResourceto encapsulate system resources and minimize the use of the rule of 5. - Documentation updates for
API - Use a
printer::Printer*to print help when usingsys::Cli::show_help() - Add
sys::System::get_executable_suffix()for desktop builds - Add
fs::AssetFileSystemfor use on desktop builds to manage bundled assets - Add
var::ReplaceCharacterandvar::ReplaceStringstructsvar::String::Replaceis now an alias ofvar::ReplaceStringvar::StackString::Replaceis now an alias ofvar::ReplaceCharacter
- Add function to access
Process::pid() - Add
to_string()andfrom_string()tochrono::ClockTime - Add operator for printing
Dateas an object - Add aliases to
StackStringtypes with the max length of the string (e.g.StackString24) - Add
doubledetection forvar::NumberStringfor__linkbuilds - Add static function for
sys::Pipe::make_fifo()for linux and macOS sys::Processno longer provides a pipe. It gives anfs::DataFilefor standard output and error.- Add
sys::System::launch_browser()to open a link in the system browser - Add
api::catch_segmentation_fault()to callAPI_ASSERT()when a segmentation fault happens (desktop) - Use
fs::PathContainerinstead offs::PathList.fs::PathListwill be deprecated.Containeris a more accurate description.
- Many minor bug fixes based on
SonarLintsuggestions - The function
sys::Cli::show_versionwas not implemented (it is now) - Remove relative links in
README.md - Minor (SonarLint) fixes in
printer::MarkdownPrinter - Make
printer::Printer::~Printervirtual - Assign
Dir::m_dirptonullptrafter the object is closed - Fix various minor issues with
fs::FileInfo - Remove redundant base functions from
fs::DirObject - Make
fs::DirObject::~DirObjectvirtual and default - Remove
#include "chrono/MicroTime.hpp"fromchrono::MicroTime.hpp - When creating a thread, the error context needs to be generated for the first time with a mutex
- Ensure
PWDexists for new process before starting the process - House keeping on
Processfor linux and mac - Fix
Processspawn on Windows when the path has a space.argv[0]is given just the executable name - Add correct move semantics to StackString
- Fix
Processthreads that monitor stdout and stderr - Don't set system time in
Date().set_system_time()if there is an error
Important!
fs::TemporaryDirectory()which is not used often was moved tosys::TemporaryDirectory()to avoid a circular dependency between SysAPI and FsAPI. This is a symantic versioning breaking change (though a small one)
- Updates to CMake test structure, added
API_testtarget - Improved performance of
File::get_line() - Add
StrackString<>::truncate()method - Better test integration with super projects (
api_teststarget) - Add
API_IS_TESTcmake option for enabling tests - Add
.clang-format - Add
thread::Cond::wait_until_asserted()to wait for a condition to be asserted - Increased the size of
var::PathStringon Windows from262to4096 - Added a bool member to
thread::Condthat can be used for thread synchronization - Make printer progress keys unique on multiple calls
- Add
API_PUBLIC_MEMBER_AZ()and its shortcutAPI_PMAZ()for adding public members that are written in such a way to be easily sorted alphabetically by IDE tools - Add
API_PUBLIC_BOOL()for public boolean members - Add
API_PUBLIC_MEMBERS()macros for declaring and accessing purely public members - Add more ways to construct a Thread (less cumbersome)
- Add
api::Rangeandapi::Indexfor creating simple ranges for range based for loopsapi::Indexcan take one argument and count from zero toend-1and automatically infer the type
- Return
IsExcludewhen usingFileSystem::read_directory()(added a method for backward compatibility too) - Add
get_line()to file object to read a line into an arbitrary string type - Add
test::Test::Scopefor managing application level test initialization and finalization - Use
~when printing simple indeterminate progress - Add
sys::Processandsys::Pipe(only for desktop builds) - implement operator for sending
sys::Clito aprinter::Printer - Add
API_SINGLETON_CUSTOM_CONSTRUCTOR()macro for singletons that have logic in the constructor - minor improvements to
var::StackStringtypes - Add
Mq::Fileto create aFileObjectbased on a message queue - Add
API_SINGLETON()macro for creating singleton classes - Added
DescriptorScopetoFileto temporarily use a file descriptor - Add templated
to_string<>()method toClockTime - Add
accumulate()to container classes (work in progress)
- Fixed some bugs when configuring threads in Windows
- Tidy (with clang-tidy)
- fixed a bug in
fs::Path::suffixandfs::Path::namewhen getting a suffix of a stringview that is part of a larger null terminated string - Check for zero size when adding a null terminator to
var::Data - Change
fs::File&toconst fs::FileObject&when constructing afs::DataFilefrom another File - Fixed broken build on StratifyOS with Signal casting to
_sig_func_ptr
- Add
Signal::HandlerScopeto restore the default handler when the object goes out of scope - Add
Test::TimedScopeclass to check for testing durations - Add enum class
chrono::Date::Monthfor a list of months - Add class
Thread::Mqto support posix mqueue - Add optional stack size parameter when constructing
Thread::Attributes - If
Thread::Attributeschanges policy or priority, policy inherit is disabled - Add
Mutex::unlock_with_error_check()to check errors when unlocking a mutex - Malloc chunk size reference is no longer tied to the target chunk size
- Add
Var::View::find()to find a view within another view - Add
API_OR_ENUM_CLASSmacro for adding flag operators to an enum class - Add
from_stringtovar::View
- Fixed a bug when starting new threads that are immediately moved
Sem::wait_timed()now adds the time argument to the system time and passes absolute time tosem_timedwait()Thread::Attributesnow inheritsapi::ExecutionContext- Fix bug in
Thread::Attributes::get_inherit_sched()where the wrong call was made Thread::set_cancel_state()andThread::set_cancel_type()changed to static methods- Remove bugs with
interface_closedir()andinternal_opendir()to avoid virtual methods in constructor/deconstuctor - Permissions class now returns access permissions instead of full type with
permissions()method - Add a newline when closing markdown code section
Initial stable release.