Releases: stclib/STC
Release v5.0
Finally after nearly two years, a new release of STC! It has lots of improvements, new features and bug fixes. There are a number of breaking changes since the last released version, so make sure to check out the version history. Special thanks to all who contributed with PRs, bug reports and suggestions!
New Features in v5.0**
- New main build system with Meson. Simple Makefile provided as well.
- New sum type (tagged union), included via
algorithm.h
- New single/multi-dimensional generic span type, with numpy-like slicing.
- Coroutines now support structured concurrency and symmetric coroutines.
- Coroutines now support error handling and error recovery.
- Template parameter
i_type
lets you definei_type
,i_key
, andi_val
all in one line (comma separated). - Template parameters
i_keyclass
andi_valclass
to specify types with_drop()
and_clone()
functions defined. - Template parameters
i_keypro
andi_valpro
to specifycstr
,box
andarc
types (users may also define pro-types). - hmap now uses Robin Hood hashing (very fast on clang compiler).
- Several new algorithms added, e.g.
c_filter
(ranges-like). - A lot of improvements and bug fixes.
What's Changed
- add
cco
macro, block style coroutine definition by @liigo in #57 - Merge in backported code from master by @tylov in #63
- Dev43 by @tylov in #65
- Use attribute((unused)) for clang too by @sgraham in #73
- Remove trailing whitespace by @sgraham in #75
- singleheader.py fixes for Windows and newer Python by @sgraham in #74
- Fix issue with cbits_resize overwriting data when shrinking by @thehoustonian in #94
- Fix arc memory leak by @wmww in #82
- Detect Clang and Intel compilers for unused attribute. by @Melkor-1 in #89
- fix some mistake in deq_api.md by @soyoo in #90
- Add meson build system support by @mochaaP in #98
- build/meson: fix building as a subproject by @mochaaP in #100
- ci: add meson build/tests with asan/ubsan/msan by @mochaaP in #101
- build: misc changes by @mochaaP in #111
New Contributors
- @sgraham made their first contribution in #73
- @thehoustonian made their first contribution in #94
- @wmww made their first contribution in #82
- @Melkor-1 made their first contribution in #89
- @soyoo made their first contribution in #90
- @mochaaP made their first contribution in #98
Full Changelog: v4.2...v5.0
Release v4.2
Version 4.2
- New home! And online single headers for https://godbolt.org
- Library: https://github.com/stclib/STC
- Headers, e.g. https://raw.githubusercontent.com/stclib/stcsingle/main/stc/cvec.h
- Much improved documentation
- Added Coroutines + documentation
- Added new crand.h API & header. Old crandom.h is deprecated.
- Added
c_const_cast()
typesafe macro. - Removed RAII macros usage from examples
- Renamed c_foreach_r =>
c_foreach_rv
- Renamed c_flt_count(i) =>
c_flt_counter(i)
- Renamed c_flt_last(i) =>
c_flt_getcount(i)
- Renamed c_ARRAYLEN() => c_arraylen()
- Removed deprecated c_ARGSV(). Use c_SV()
- Removed c_PAIR
Release v4.1.1
News: Version 4.1.1 Released (Feb 2023)
This is a minor patch to v4.1:
- Renamed
c_ARGSV(sv)
=>c_SV(sv)
: for printing a csview using "%.*s" format. Old name deprecated. Note that lowercasec_sv()
is shorthand for csview_from() / csview_from_n(). - cbits now uses 64-bits signed indices and sizes, to fix max size limit of 0.25 GB on 32-bit platforms.
- Some improved documentation.
Release v4.1
I am happy to finally announce a new release! Major changes:
- A new exciting cspan single/multi-dimensional array view (with numpy-like slicing).
- Signed sizes and indices for all containers. See C++ Core Guidelines by Stroustrup/Sutter: ES.100, ES.102, ES.106, and ES.107.
- Customizable allocator per templated container type.
- Updates on cregex with several new unicode character classes.
- Algorithms:
- crange - similar to boost::irange integer range generator.
- c_forfilter - ranges-like filtering.
- csort - fast quicksort with custom inline comparison.
- Support for uppercase flow-control macro names in ccommon.h.
- Create single header container versions with python script.
- Some API changes in cregex and cstr.
VERSION 3.8
This version has a different API for cstr replace() / find() and u8() functions. Some changes to csview as well.
Adds cregex with documentation, and adds back coption, which was removed some months ago.
VERSION 3.7
Container functions size(), capacity() and empty() now take pointer to containers, See release notes for details in README.md.
VERSION 3.6
Last commit before v3.7. Container functions size(), capacity() and empty() take value parameters, which is changed to const pointer in 3.7.
Release v3.5.1
- Swapped to new cstr (short string optimized, aka SSO). Note that cstr_str(&s) must be used, s.str is no longer usable.
- Added general i_clone template parameter: containers with smart pointers (carc, cbox) can now be correctly cloned.
- Optimized c_default_hash(). Therefore c_hash32() and c_hash64() are removed (same speed).
- Added .._push() and .._emplace() function to all containers to allow for more generic coding.
- Added some examples and benchmarks for SSO and heterogenous lookup comparison with c++20 (string_bench_*.cpp).
Release V2.0 RC New Style
Release candidate for first version of new template instantiation style,
Release v1.3
Final version of "old-style" templating. Version 2.x uses a new way o instantiating templates.