Skip to content

Releases: synesissoftware/STLSoft

v1.11.1-rc8

Choose a tag to compare

@synesissoftware synesissoftware released this 10 Oct 05:38
2e90e6f
  • additions:
    • Added stlsoft_C_environment_variable_strtoll_m() and stlsoft::environment_variable_strtoll(), with UNIX getenv() / strtoll() and Windows getenv_s() / STLSOFT_C_AUTO_BUFFER support; 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), and platformstl_C_get_current_process_id() (platformstl/process/functions.h, new), in terms of getpid() / _getpid();
    • unixstl::filesystem_traits — added rewind_dir() (wrapping rewinddir()) to complement open_dir(), read_dir(), and close_dir(), so that a directory search may be restarted from its first entry without closing and reopening the handle;
  • fixes:
    • Fixed stlsoft_C_environment_variable_exists_m() when getenv_s() reports an existing empty variable; added component tests for stlsoft::environment_variable_exists();
    • unixstl::filesystem_traits — class_type is now defined in terms of char_type (the wide-character specialisation previously named the narrow specialisation);
    • unixstl / winstl system_traits and filesystem_traits — canonicalised the conditional-compilation guards (no behavioural change);
  • testing:
    • Component tests for unixstl::filesystem_traits (test/component/unixstl/filesystem/filesystem_traits/opendir) cover open_dir(), read_dir(), rewind_dir() (before any read, after a partial read, after exhaustion, on an empty directory, and repeatedly), and close_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);
  • 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 --config selected from SIS_CMAKE_CONFIG for multi-config generators) rather than make / mingw32-make; coloured output (-A / --always-use-colours, SIS_CMAKE_ALWAYS_USE_COLOURS, NO_COLOR); quoted paths and arguments; .sis/project_name.txt used in all status messages;
    • prepare_cmake.sh — added --build-shared-libs and -s / --stlsoft-root-dir; honours SIS_CMAKE_GENERATOR and SIS_CMAKE_MINGW; every -D option is passed on all generator paths;
    • run_all_unit_tests.sh / .cmd — now run unit-test programs only (--unit-only accepted for compatibility; --component-only removed);
    • 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 exports SIS_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 *.cmake as 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;

v1.11.1-rc7

Choose a tag to compare

@synesissoftware synesissoftware released this 30 Sep 05:45
a086831
  • 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_t prefix compares with char_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 deprecated write(void const*, size_t) in its favour;
  • platformstl::basic_file_lines<> — parse directly from the memory-mapped base (dropped the full-file m_contents heap 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 than fgetc line accumulation and typically comparable to or slightly ahead of std::getline (~1.2× on MinGW CI); owning-string forms remain competitive with std::getline while avoiding the extra full-file copy;
  • Renamed stlsoft_C_environment_variable_exists_a() to stlsoft_C_environment_variable_exists_m(); the _a form remains as a deprecated forwarder;
  • Added count_bits_by_intrinsic() and find_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 / _BitScanReverse intrinsics (GCC/Clang builtins preferred over MSVC when both are visible);
  • Clang cccap — STLSOFT_CLANG_VER; documented shared STLSOFT_GCC_VER (also noted in GCC cccap);
  • Fixed count_bits() overloads when STLSOFT_BIT_COUNT_BY_Kernighan is 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 DWORD byte count to NetApiBufferAllocate; the unit test links netapi32;
  • stlsoft/std/cstring.hpp — suppress CRT deprecation around the strcpy, strcat, and strdup wrappers;
  • 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 expand piping (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 stay test.<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 on simple_string, static_string, string_view, and string_slice;
  • Component tests for stlsoft::environment_variable_exists() (test/component/stlsoft/system/environment_variable_exists), including std::string / simple_string shims 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(), and std::list / std::vector use (null_allocator throws out_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

Choose a tag to compare

@synesissoftware synesissoftware released this 20 Sep 20:24
d94d04e
  • 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_snprintf implemented in terms of stlsoft_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/.sis drop-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 — clear m_bUsed on the source object (was incorrectly using pointer dereference);
  • fix: MinGW compatibility;
  • fix: C90 compatibility;
  • Fixed stlsoft::string_to_integer_range<>() — call renamed try_string_to_integer_4slre_ helper;
  • Added stlsoft::sinteger64 copy constructor;
  • stlsoft/api/external/string.h — case-insensitive aliases (STLSOFT_API_EXTERNAL_string_stricmp and kin) for Clang as well as GCC, and for macOS (__APPLE__); added test.unit.stlsoft.api.external.string;

v1.11.1-rc5

Choose a tag to compare

@synesissoftware synesissoftware released this 03 Aug 21:44
  • 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

Choose a tag to compare

@synesissoftware synesissoftware released this 28 Jul 22:07
  • 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() missing return statement;
  • Fixed signed/unsigned comparison warning in winstl_C_printf_debug_string();
  • Aligned Clang 64-bit sized types with GCC to use long long instead 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_sequence when 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-only and --component-only flags to unit test runners;
  • Added run_all_examples scripts with --skip-interactive support;

1.11.1-rc3 (#121)

Choose a tag to compare

@synesissoftware synesissoftware released this 15 Jul 12:59
009e719
  • 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'

Choose a tag to compare

@synesissoftware synesissoftware released this 15 Jul 12:58
  • project boilerplate updated (in line with STLSoft-1.11);

1.9.136 (#10)

Choose a tag to compare

@synesissoftware synesissoftware released this 15 Jul 12:56
  • lots of changes to standardise the library boilerplate;
  • porting back significant and necessary fixes from STLSoft-1.10;