SC::Async#
Fine tuning
SC::Async
Library has been receiving some fixes and an useful refactoring.
AsyncEventLoop::runOnce
has been split into three methods, separating:
- request submission
- polling for new events
- completion callbacks dispatch
The main use of this would be integrating an AsyncEventLoop with another event loop from another library that already "owns" the application main thread, including a GUI event loop.
This refactoring has been recorded in a video
Relevant commits:
- Async: Split runOnce into submitRequests, blockingPoll and dispatchCompletions
- Async: More precise handling of GetQueuedCompletionStatusEx on Windows 10
- Async: Allow re-activation of AsyncLoopTimeout
- Async: Add ReactivateAsyncPhase to allow skipping submission on reactivation
- Async: Hide KernelQueue and KernelEvents inside Internal
- Async: Handle different GetQueuedCompletionStatusEx behavior on Windows 10
- Async: Update time consistently both in NoWait and ForcedForwardProgress modes
SC::Build#
Handmade toy build system generator grows
SC::Build
Library
has also been receiving some love, increasing its capability while simplifying SC-build.cpp
scripts:
- Support generating VS2019 projects (needed by the Windows10 Github runner)
- Support Objective-C or Objective-C++ files
- Support generating multiple projects
- Support libraries to link (Makefile backend)
- Support creating non-console applications (Windows)
- Consistently handle all paths (include, libraries etc) as relative to project root
Relevant commits:
- Build: Generate one solution per project on Visual Studio backend
- Build: Specify target name when invoking Makefile
- Build: Avoid Makefile warnings on intermediates and outputs directory creation
- Build: Support Objective-C and Objective-C++ files
- Build: Generate platform specific Makefile
- Build: Express absolute include paths as relative to project dir
- Build: Add flag to generate Visual Studio projects using Windows subsystem
- Build: Allow selecting target for compile, build or run action
- Build: Simplify SC-Build with more defaults
- Build: Support link libraries on Makefile backend
- Build: Simplify usage of relative paths in includes and defines
- Build: Add basic multi-projects support
GitHub CI#
because a good and lean CI keeps you healthy
The GitHub CI has been simplified, consisting now of three github workflow files:
- windows (windows 10 + windows 11)
- posix (linux + macOS)
- documentation and coverage (macOS)
The GitHub CI matrix feature has been used to test multiple platforms and configurations. On all platforms both Debug and Release configurations are now being tested. Additionally also Windows 10 has been added to the list of platform tested by the CI.
Relevant Commits:
- CI: Skip documentation deployment step outside of forks
- CI: Merge Linux and macOS into a posix runner
- CI: Run GitHub workflows only on main branch
- CI: Fix windows pipeline
- CI: Run the tests on Windows 10 and Windows 11 both in Debug and Release
- CI: Set GitHub workflow badges to the correct URL
- CI: Skip documentation deployment step on forks
SC::Socket#
Sockets keep your feet warm
SC::Socket
library has been cleaned up, after some "encouragement" given in a issue that was trying to expand UDP support.
Relevant commits:
First contribution!#
First contributor of the project has appeared!
Thanks to this contributor PR now both Tools and Plugin
will work even if visual studio is installed in a directory different from default!
More importantly the entire CONTRIBUTING.md guide has been validated
and this also proves that SC::Tools
and the GitHub CI have been doing their job just fine!
Additional fixes#
An issue has been reported when mixing Sane C++ Libraries with C++ Standard Library on Linux and they've been fixed as well.- Foundation: Just include
if SC_COMPILER_ENABLE_STD_CPP is defined or exceptions are used
And then just a usual bunch of fixes and minor additions.
- Documentation: Update README with latest video
- Documentation: Improve commit message format and squashing sections
- Everywhere: Support Visual Studio 2019
- Everywhere: Fix ClangCL build
- FileSystem: Fix Path::relativeFromTo
- Foundation: Allow passing arbitrary number of arguments to placement new
- Strings: Add String::owns
- Time: Add operator < and > to Milliseconds and HighResolutionCounter::getRelative
- Tools: Escape path for the .touched file in the NMAKE Windows bootstrap
- Tools: Use just commit hash for SC-Package when cloning git repos
- Tools: Fix HEAD casing for "git rev-parse" used by SC-Package
- Tools: Automatically retry building a tool on make failure