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:
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.
@ -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.
@ -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. 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
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.
@ -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 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
- Thread Pool
- Optional shutdown on work exhaustion
- Wait for task[s] completion builtin to work objects
- IO subsystem interop
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]`