Repository navigation
Releases: synesissoftware/STLSoft
Releases · synesissoftware/STLSoft
Release list
v1.11.1-rc8
- additions:
- Added
stlsoft_C_environment_variable_strtoll_m()andstlsoft::environment_variable_strtoll(), with UNIXgetenv()/strtoll()and Windowsgetenv_s()/STLSOFT_C_AUTO_BUFFERsupport; added component tests; - Added
unixstl_C_get_current_process_id()(unixstl/process/functions.h, new),winstl_C_get_current_process_id()(winstl/process/functions.h), andplatformstl_C_get_current_process_id()(platformstl/process/functions.h, new), in terms ofgetpid()/_getpid(); - unixstl::filesystem_traits — added
rewind_dir()(wrappingrewinddir()) to complementopen_dir(),read_dir(), andclose_dir(), so that a directory search may be restarted from its first entry without closing and reopening the handle;
- Added
- fixes:
- Fixed
stlsoft_C_environment_variable_exists_m()whengetenv_s()reports an existing empty variable; added component tests forstlsoft::environment_variable_exists(); - unixstl::filesystem_traits —
class_typeis now defined in terms ofchar_type(the wide-character specialisation previously named the narrow specialisation); - unixstl / winstl
system_traitsandfilesystem_traits— canonicalised the conditional-compilation guards (no behavioural change);
- Fixed
- testing:
- Component tests for
unixstl::filesystem_traits(test/component/unixstl/filesystem/filesystem_traits/opendir) coveropen_dir(),read_dir(),rewind_dir()(before any read, after a partial read, after exhaustion, on an empty directory, and repeatedly), andclose_dir(); - Scratch test test/scratch/unixstl/filesystem/rewind_dir — exercises
rewind_dir()over a directory given on the command-line; - Example examples/by_project/unixstl/filesystem/rewind_dir — enumerates a directory in two passes (count, then collect), using
rewind_dir()between them; - test.unit.versions — aligned with 1.11.1-rc8 (_STLSOFT_VER_1_11_1_RC8);
- Component tests for
- version:
- unixstl — 1.8.6 beta 7 (_UNIXSTL_VER_1_8_6_B07), with STLSoft 1.11.1-rc8;
- winstl — 1.13.0 beta 4 (_WINSTL_VER_1_13_0_B04), with STLSoft 1.11.1-rc8;
- inetstl — 1.5.0 alpha 3 (_INETSTL_VER_1_5_0_A03), with STLSoft 1.11.1-rc8;
- boilerplate:
- Added run_all_component_tests.sh / .cmd, run_all_performance_tests.sh / .cmd (with
--gap-groups), and run_all_automated_tests.sh / .cmd (unit then component;--unit-only/--component-only); - Added generate_doxygen.sh, Doxyfile, and doc/mainpage.md — HTML API documentation generated from the public headers into _build/doxygen/html;
- remove_cmake_artefacts.sh — no longer removes docs or Doxyfile; iterates arrays safely;
- batch_compile_check, execute_performance_tests.sh — quote the
$(dirname ...)directory resolution; - Scripts — build_cmake.sh, clean_cmake.sh, ctest_cmake.sh, prepare_cmake.sh, remove_cmake_artefacts.sh, run_all_examples.sh, and run_all_scratch_tests.sh rewritten to the common Synesis helper-script layout: builds go through
cmake --build(with--configselected fromSIS_CMAKE_CONFIGfor multi-config generators) rather thanmake/mingw32-make; coloured output (-A/--always-use-colours,SIS_CMAKE_ALWAYS_USE_COLOURS,NO_COLOR); quoted paths and arguments;.sis/project_name.txtused in all status messages; - prepare_cmake.sh — added
--build-shared-libsand-s/--stlsoft-root-dir; honoursSIS_CMAKE_GENERATORandSIS_CMAKE_MINGW; every-Doption is passed on all generator paths; - run_all_unit_tests.sh / .cmd — now run unit-test programs only (
--unit-onlyaccepted for compatibility;--component-onlyremoved); - run_all_examples.sh — retains
--skip-interactive(.github/ci_skip_interactive_examples.txt, which prevents headless CI hanging on GUI examples) and its discovery of every executable under the examples tree, and now exportsSIS_EXAMPLE_SMOKE=1; run_all_scratch_tests.sh / .cmd — removed--verbosity; - .gitattributes — Linguist language-bar policy: public C headers and sources are classified as C, C++ headers and sources as C++, and
*.cmakeas CMake; helper scripts, IDE project files, CMakeLists.txt, and makefile are excluded from the advertised language mix (-linguist-detectable); - CI — ci-cell.yml runs component tests via run_all_component_tests.sh;
- INSTALL.md — documented run_all_component_tests.sh, run_all_automated_tests.sh, and generate_doxygen.sh; corrected the unit-test discovery patterns;
- Added run_all_component_tests.sh / .cmd, run_all_performance_tests.sh / .cmd (with
v1.11.1-rc7
- simple_string — counted construction,
assign,append,push_back, and concatenation keep an embedded NUL, including assignment of a single'\0'; - string_begins_with — a
wchar_tprefix compares withchar_traits<C>::compare_max(wcsncmp); - char_traits_safe — a count of 0 compares equal; a non-zero count orders a null pointer before a live pointer;
- platformstl::FILE_stream — added
write_binary()(writes every byte, including embedded NULs) and deprecatedwrite(void const*, size_t)in its favour; platformstl::basic_file_lines<>— parse directly from the memory-mapped base (dropped the full-filem_contentsheap copy); fold the binary/NUL reject into the parse loop; C++11+emplace_back; floor line-reservation at 128;- Approximate measured gains for
platformstl::basic_file_lines<>on the new harness (1000×64 LF): view-based forms (~stlsoft::string_view/std::string_view) about 10–20× faster thanfgetcline accumulation and typically comparable to or slightly ahead ofstd::getline(~1.2× on MinGW CI); owning-string forms remain competitive withstd::getlinewhile avoiding the extra full-file copy; - Renamed
stlsoft_C_environment_variable_exists_a()tostlsoft_C_environment_variable_exists_m(); the_aform remains as a deprecated forwarder; - Added
count_bits_by_intrinsic()andfind_highest_bit_by_intrinsic()(unselected by default;count_bits()keeps the 8-bit table;find_highest_bit()keeps the scan); - Added stlsoft/api/external/bitfns.h and stlsoft/api/internal/bitfns.h — detection and adaptations for
popcount/clz/_BitScanReverseintrinsics (GCC/Clang builtins preferred over MSVC when both are visible); - Clang cccap —
STLSOFT_CLANG_VER; documented sharedSTLSOFT_GCC_VER(also noted in GCC cccap); - Fixed
count_bits()overloads whenSTLSOFT_BIT_COUNT_BY_Kernighanis defined; - Strategy note strategy/BIT_FUNCTIONS.md — measurements and default choice (table for
count_bits(); keep intrinsics unselected pending cross-toolchain evidence); - winstl::netapi_allocator — pass a
DWORDbyte count toNetApiBufferAllocate; the unit test links netapi32; - stlsoft/std/cstring.hpp — suppress CRT deprecation around the
strcpy,strcat, andstrdupwrappers; - winstl — 1.13.0 beta 3 (_WINSTL_VER_1_13_0_B03), with STLSoft 1.11.1-rc7;
- CMake — Windows GNU (MinGW) test/example programs static-link libgcc / libstdc++ so PE images load when runner PATH does not match the build toolchain;
- CI — performance job exports SIS_PERFTESTS_GROUPGAPS=1;
- execute_performance_tests.sh — capture the child exit code after optional
expandpiping (was overwriting a failed status with$?from the success branch); - Test tree — leaf directories under test/component, test/unit, test/scratch, and test/performance renamed from
test.<kind>.…to the subject name (for example glob_sequence); executable names staytest.<kind>.*; - test/performance — programs nested by sub-project and area (platformstl/diagnostics, platformstl/filesystem, stlsoft/containers, stlsoft/conversion, stlsoft/diagnostics, stlsoft/memory, stlsoft/string, stlsoft/util);
- String-comparison units —
strnicmp(C and C++),c_string_traits,char_traits/char_traits_safe,strcmp/strncmp, BSTR compare,string_begins_with,special_string_instance::equal, and compare edges onsimple_string,static_string,string_view, andstring_slice; - Component tests for
stlsoft::environment_variable_exists()(test/component/stlsoft/system/environment_variable_exists), includingstd::string/simple_stringshims and UNIX empty-value behaviour; - Component tests for
platformstl::file_lines(test/component/platformstl/filesystem/file_lines) cover LF, CR, and CRLF splits, including an empty line, and reject an embedded NUL; - Unit tests for intrinsic popcount / highest-bit helpers; broader width coverage for bit-function overloads;
- Performance suite test/performance/stlsoft/util/bit_functions (density patterns, intrinsic rows, median / ns-per-call reporting);
- Performance suite test/performance/platformstl/filesystem/file_lines — comparative harness vs
fgetc/std::getline(LF / CRLF / CR; mid-size and small-file shapes; C++11+); - Unit tests — removed empty placeholder cases; filled the nine allocator suites (comstl::task_allocator, mfcstl::afx_allocator, malloc_allocator, new_allocator, null_allocator, and WinSTL global_allocator, netapi_allocator, processheap_allocator, and shell_allocator) with round-trip sizes,
max_size(), andstd::list/std::vectoruse (null_allocatorthrowsout_of_memory_exception); - test.unit.versions — aligned with 1.11.1-rc7 (_STLSOFT_VER_1_11_1_RC7) and WinSTL 1.13.0 beta 3 (_WINSTL_VER_1_13_0_B03);
v1.11.1-rc6
- CMake/CI — optional ACE discovery (cmake/FindACE.cmake, NO_ACE / prepare_cmake.sh --no-ace); dedicated cell-ace job (with-ace);
- CI — exercise ATLSTL on Windows via with-atl cell (cmake/FindATL.cmake);
- CI — exercise MFCSTL on Windows via with-mfc cell (stlsoft_prepare_mfc_target);
- CI — restore executable bits after artifact download; fail when zero unit tests discovered; do not chmod/run CMake artefacts as examples;
- CMake — prefer tree headers over installed STLSoft (
NO_SYSTEM_FROM_IMPORTED); set CMP0177 on CMake ≥ 3.31; - ACESTL —
invoke_ACE_OS_snprintfimplemented in terms ofstlsoft_C_snprintf(); unit tests for ACE_String_Base / ACE_Time_Value string-access shims; - TODO.md — restructured 1.11 / 1.12 roadmap; marked ACE/ATL/MFC CI and terse-API items complete;
- Scripts — .sis/project_name.txt; colourised run_all_*.sh / execute_performance_tests.sh; new ctest_cmake.sh; MSYS auto-MinGW in prepare_cmake.sh;
- Applied misc-dev-scripts 0.6.0 editor/Git/
.sisdrop-in templates on boilerplate; - Restored historical .gitignore patterns as a sorted union with misc-dev-scripts gold section layout;
- INSTALL.md / README.md — ACE / ACESTL discovery notes;
- test.unit.versions — aligned with 1.11.1-rc6 (_STLSOFT_VER_1_11_1_RC6);
- All unit/component test assertions use xTests Terse API;
- Renamed C-language test/example programs to subject.C form (e.g. test.unit.comstl.string.BSTR_functions.C);
- Fixed
stlsoft::unused_return_value_monitor<>copy constructor — clearm_bUsedon the source object (was incorrectly using pointer dereference); - fix: MinGW compatibility;
- fix: C90 compatibility;
- Fixed
stlsoft::string_to_integer_range<>()— call renamedtry_string_to_integer_4slre_helper; - Added
stlsoft::sinteger64copy constructor; - stlsoft/api/external/string.h — case-insensitive aliases (
STLSOFT_API_EXTERNAL_string_stricmpand kin) for Clang as well as GCC, and for macOS (__APPLE__); added test.unit.stlsoft.api.external.string;
v1.11.1-rc5
- Fixed
stlsoft::basic_simple_string<>#resize()— expanding a non-empty string no longer over-reads the source buffer (MinGW unit-test segfault in test.unit.stlsoft.string.simple_string); - Converted CHANGES.txt to CHANGES.md and removed HISTORY.md;
- Project documentation modernisation — README.md, FAQ.md, INSTALL.md, EXAMPLES.md, KNOWN_ISSUES.md, TODO.md, HOW_YOU_CAN_HELP.md, AUTHORS.md; repository URLs STLSoft-1.11 → STLSoft;
- EXAMPLES.md — replaced “T.B.C.” placeholders with concrete summaries;
- README.md — fleshed out Components (sub-projects / libraries); CI badge targets ci.yml; badge set standardised;
- CI (ci.yml) — concurrency cancel-in-progress; branch triggers include dev / rc* / update; matrix cell order;
- CMake — minimum version 3.20; BUILD_TESTING option; project homepage URL; patch/revision version regex;
- Project boilerplate — .gitattributes, .vimrc, .vscode/settings.json;
- test.unit.versions — aligned with 1.11.1-rc5 (_STLSOFT_VER_1_11_1_RC5);
1.11.1-rc4
- Added GitHub Actions CI on macOS, Linux, and Windows with Clang, GCC, MinGW, and Visual C++;
- Added recognition for Visual C++ 18.x in stlsoft/stlsoft.h;
- Fixed
winstl::codepage_sequence::data()missingreturnstatement; - Fixed
signed/unsignedcomparison warning inwinstl_C_printf_debug_string(); - Aligned Clang 64-bit sized types with GCC to use
long longinstead of__INT64_TYPE__to avoid overload collision on Linux LP64; - Added overflow checks in allocator
allocate()to prevent wrapping and fix GCC-Walloc-size-larger-than=warnings; - Fixed potential unsigned underflow in
unixstl::pid_sequencewhen empty; - Added MinGW compatibility guards in
winstl/util/struct_comparers.hpp; - Aligned test and example runner scripts across shell and Windows command counterparts;
- Added
--unit-onlyand--component-onlyflags to unit test runners; - Added
run_all_examplesscripts with--skip-interactivesupport;
1.11.1-rc3 (#121)
- Added
platformstl::pid_sequence/unixstl::pid_sequence; - Added
winstl_C_printf_debug_string()in winstl/diagnostics/printf_debug_line.h; - Added
winstl::codepage_sequence; - Added Window write-to-console functions;
- More examples;
- More tests;
- Corrected some minor defects around language version detection;
- Compatibility/corrections in string-to-integer functions;
- Canonicalise example programs source names;
- Backwards compatibility (partial) for Visual C++ back to v10;
- Project boilerplate;
1.10.12: Merged 'dev' into 'master'
- project boilerplate updated (in line with STLSoft-1.11);
1.9.136 (#10)
- lots of changes to standardise the library boilerplate;
- porting back significant and necessary fixes from STLSoft-1.10;