From f928698542224fd3ccf9b6e171d7083dc87b07ce Mon Sep 17 00:00:00 2001 From: Jamie Reece Wilson Date: Sun, 17 Sep 2023 03:44:01 +0100 Subject: [PATCH] [*] READAME: Update compatibility table + version --- LICENSE | 2 +- README.md | 50 ++++++++++++++++++++++++-------------------------- 2 files changed, 25 insertions(+), 27 deletions(-) diff --git a/LICENSE b/LICENSE index 4651e993..0e46a603 100644 --- a/LICENSE +++ b/LICENSE @@ -1,4 +1,4 @@ -Copyright 2020-2023 J Reece Wilson +Copyright 2020-2023 Jamie Reece Wilson Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: diff --git a/README.md b/README.md index 0998c0d7..6f799a24 100644 --- a/README.md +++ b/README.md @@ -1,10 +1,8 @@ -## PREALPHA +## Alpha (since v0.3.80) ## AuroraRuntime The Aurora Runtime is a low level platform abstraction layer for modern cross-platform C++ -development targeting powerful embedded and PC systems. Simply fetch a binary package for -your toolchain or integrate the self-contained buildscripts into your applications build -pipeline to get started. +development targeting powerful embedded and PC systems. ![console](https://gitea.reece.sx/AuroraSupport/AuroraRuntime/raw/branch/master/Media/wxHello.png) ![picture](https://gitea.reece.sx/AuroraSupport/AuroraRuntime/raw/branch/master/Media/Hello%20Aurora.png) @@ -58,24 +56,25 @@ Discord: [Invite](https://discord.gg/XYjCGWWa4J) | Platform | Support | | ----------- | ------- | -| NT/XP | ❌ | +| NT/XP | ❌🕖 | +| NT/Server 2003 | ⚠️⚠️️ | | NT/Vista | ⚠️⚠️️ | | NT/Server 2008 | ⚠️⚠️ | -| NT/Win7 | ⚠️ | -| NT/Win8.1+ | ⚠️ | +| NT/Win7 | ✅⚠️ | +| NT/Win8.1+ | ✅⚠️ | | NT/Win10 RS4+ | ✅ | | NT/Win11 | ✅ | | NT/UWP | 🕖 | | NT/GameOS| ❌ | | Linux | ✅ | | FreeBSD 9 | ❌ | -| FreeBSD 11 | ❌ | +| FreeBSD 11 | ❌🕖 | | OpenBSD | ❌ | | XNU/NS-like | ❌ | Win7/8: memory management (AuProcess) is limited. \ Applications that don't need ::mmap-like functionality **with pre-reserved address allocations** should put your minimum requirements into the Vista era of NTs. \ -See: [Windows 7 defects](https://gitea.reece.sx/AuroraSupport/AuroraRuntime/src/branch/master/Media/Windows%207%20Defects.txt) \ +See: [Windows XP - 7 defects](https://gitea.reece.sx/AuroraSupport/AuroraRuntime/src/branch/master/Media/Windows%207%20Defects.txt) \ Earlier NT revisions could be supported; however, there is creep across various subsystems and libraries for XP to not work. In addition, anything older than a fully patched Windows 7 system is untested. ## Performance @@ -145,7 +144,9 @@ data and safe cleanup. ## Thread Primitives The Aurora Runtime provides platform optimized threading primitives inheriting from a featureful -IWaitable interface. Each method is guaranteed. Each primitive is user-land scheduler optimized. +IWaitable interface. Each method is guaranteed. Each primitive is implemented in userland with +lock-less atomic fastpaths on every single platform from Windows XP to Windows 11, to Linux, +with nanosecond resolution absolute and relative yielding. ``` struct IWaitable @@ -171,7 +172,7 @@ Included high performance primitives ^1 Accepts __any__ IWaitable as the mutex \ ^2 Reentrant Mutex \ ^3 Includes extended read to write upgrades and permits write-entrant read-routines to prevent -writer deadlocks. +writer deadlocks. Two variants are included to provide further granularity over reentry behavior. ### Fixing problems in other scheduler apis @@ -200,6 +201,9 @@ resources. 4 ex: Windows developers could use loop sources as a replacement to WaitMultipleObjects with more overhead + +4 ex2: If you really don't care about efficiency or you're performing an AND operation, you can + AuThreading::[WaitForShared/WaitFor] to yield on an array of generic waitables. ## IO @@ -284,6 +288,8 @@ All string paths are simply expanded, similar to MSCRT's `fullpath` or UNIX's `r | `\` | Agnostic Directory Splitter | | `.` [SPLITTER] | Nothing | +## * Note, this means sym-links are not traversed until after the path is first made canonical by a naive expansion (read: fast/avoiding sys io+errors) and normalization algorithm.* + ### TLS TLS client and partial server support is provided by protocol stack interceptors meaning that our implementation is no-socket. @@ -458,22 +464,11 @@ exact same thing in different not-so-portable ways. Unifying memory access to 4 Unrelated note, structure interfacing with questionable C++ ABI reimplementations is somewhat sketchy in FFI projects (^ CppSharp) can lead to some memory leaks. - -## Aurora Async - -[TODO] -- Promises -- Thread Pool -- Optional shutdown on work exhaustion -- Wait for task[s] completion builtin to work objects -- IO subsystem interop - -Example: - ## Strings The auROXTL header only library defines an `AuString` type as an `std::string`; however, it should be assumed this type represents -a binary blob of UTF-8. Further locale processing is delegated to `Aurora::Locale[::Encoding]` +a binary blob of UTF-8 (or perhaps malformed to include NULs). +Further locale processing is delegated to `Aurora::Locale[::Encoding]` ## Dependencies @@ -491,12 +486,15 @@ Crypto (third party) Compression (third party) - [zstd](https://git.reece.sx/AuroraMiddleware/zstd) - [zlib](https://git.reece.sx/AuroraMiddleware/zlib) -- [bzip2](https://git.reece.sx/AuroraMiddleware/bzip2) +- [bzip2](https://git.reece.sx/AuroraMiddleware/bzip2) (optional) +- [brotli](https://git.reece.sx/AuroraMiddleware/brotli) (optional) +- [lzma](https://gitea.reece.sx/AuroraMiddleware/liblzma) (optional) Utility (third party) - [stduuid](https://git.reece.sx/AuroraMiddleware/stduuid) ^6 - [fmtlib](https://git.reece.sx/AuroraMiddleware/fmt) ^4 ^6 - [nl. json](https://git.reece.sx/AuroraMiddleware/nlohmannjson) ^6 +- [o1heap](https://git.reece.sx/AuroraMiddleware/o1heap) ^1 Include-only macro library \ @@ -510,7 +508,7 @@ Utility (third party) ## Philosophies -- Assume C++17 language support in the language driver +- Assume C++17 to C++20-ish (but not quite) language support in the language driver - Use AuXXX type bindings for std types, allow customers to overload the std namespace \ We assume *some* containers and utility APIs exist, but where they come from is up to you