[*] READAME: Update compatibility table + version

This commit is contained in:
Reece Wilson 2023-09-17 03:44:01 +01:00
parent ab6f00f094
commit f928698542
2 changed files with 25 additions and 27 deletions

View File

@ -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:

View File

@ -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
@ -201,6 +202,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
The Aurora Runtime implements loop, file io, network io, and other sub-subsystems with
@ -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