[*] Update readme 1/2

This commit is contained in:
Reece Wilson 2022-05-12 07:51:43 +01:00
parent 4be0b58970
commit 13caca23e7

View File

@ -42,13 +42,12 @@ pipeline to get started.
API: API:
* [Runtime](https://gitea.reece.sx/AuroraSupport/AuroraRuntime/src/branch/master/Include/Aurora) * [Runtime](https://gitea.reece.sx/AuroraSupport/AuroraRuntime/src/branch/master/Include/Aurora)
* [auROXTL](https://gitea.reece.sx/AuroraSupport/AuroraRuntime/src/branch/master/Include/auROXTL) * [auROXTL](https://gitea.reece.sx/AuroraSupport/auROXTL/src/branch/master/Include)
Examples: [Hello Aurora](https://gitea.reece.sx/AuroraSupport/HelloAurora) \ API Docs: \
Doxygen: \ Tests and Examples: [Hello Aurora](https://gitea.reece.sx/AuroraSupport/HelloAurora) \
Tests: [Hello Aurora](https://gitea.reece.sx/AuroraSupport/HelloAurora) \ Build Pipeline: [Aurora Build](https://git.reece.sx/AuroraPipeline/Build) (Lua/Premake) \
Cmake-stable: \ Donate / Other Links: [Reece.SX](https://reece.sx/#contact) \
Build Pipeline: https://git.reece.sx/AuroraPipeline/Build \
Discord: [Invite](https://discord.gg/XYjCGWWa4J) Discord: [Invite](https://discord.gg/XYjCGWWa4J)
## Performance ## Performance
@ -78,9 +77,9 @@ Defer to benchmarks
## Utilities ## Utilities
Aurora Sugar: https://git.reece.sx/AuroraSupport/auROXTL/src/branch/master/Include/auROXTLUtils.hpp <br> Aurora Sugar: [Main Header](https://git.reece.sx/AuroraSupport/auROXTL/src/branch/master/Include/auROXTLUtils.hpp), [(*.)Utils.hpp](https://gitea.reece.sx/AuroraSupport/auROXTL/src/branch/master/Include/auROXTL) \
Aurora Macro Sugar: https://git.reece.sx/AuroraSupport/auROXTL/src/branch/master/Include/auROXTL/AU_MACROS.hpp <br> Aurora Macro Sugar: [Main Header](https://git.reece.sx/AuroraSupport/auROXTL/src/branch/master/Include/auROXTL/AU_MACROS.hpp) \
Aurora Overloadable Type Declerations: https://git.reece.sx/AuroraSupport/auROXTL/src/branch/master/Include/auROXTLTypedefs.hpp Aurora Overloadable Type Declerations: [Main Header](https://gitea.reece.sx/AuroraSupport/auROXTL/src/branch/master/Include/auROXTLTypes.hpp)
## Logging ## Logging
@ -200,13 +199,16 @@ POSIX:
## Loop ## Loop
The Aurora Runtime implements a kernel-scheduler optimized IO subsystem for managing Window, Network, File, IPC, and thread The Aurora Runtime implements a kernel-scheduler optimized IO subsystem for managing GUIs, Network AIO, File AIO, IPC AIO, and thread
synchronization objects through loop the loop subsystem. synchronization objects through loop the loop subsystem.
Loop sources are an interface defined by the loop subsystem for objects with a signalable state. Attached to a LoopQueue, the Loop sources are an interface defined by the loop subsystem for objects with a signalable state. Attached to a LoopQueue, the
LoopQueue will provide a Wait-on related functions and subscription notifications of signal state change - allowing for optimized LoopQueue will provide a Wait-on related functions and subscription notifications of signal state change - allowing for optimized
loop source removal or reinsert hints from the return values of the subscription interface. In addition, the ILoopSource interface loop source removal or no-action replies from the subscription interface. In addition, the ILoopSource interface permits arbitrary
permits arbitrary is-signaled-and-latch (TryLock) queries. is-signaled-and-latch (TryLock) queries and timed-wait (WaitOn) calls removing the need for loop queues during simple operations.
Advanced use cases of loop include the addition and removal of watched signalable objects on a remote worker thread, high performance
async synchronization to lower performance IO, and the multiplexing of primitive IO streams.
@ -275,10 +277,10 @@ binary blob of UTF-8. Looking to switch to `tiny-utf8` for UTF-8 safety.
### Allocator ### Allocator
Objects are allocated across API/Module boundaries; and so long as the high level API design isn't horribly inefficient, the Objects are allocated across API/Module boundaries. So long as the high level API design isn't horribly inefficient to an extent
cache invalidation and indirect lookups should be minimalized. On modern hardware, indirect branching versus short jumps aren't that cache invalidation and indirect lookups are minimalized, object-heavy code can optimized. On modern hardware, legitmate indirect
so expensive, and in combination with a fast enough allocator, it's a model that could provide reasonable OOP performance branching versus short jumps aren't so expensive between modules in real world usage; and in combination with a fast enough allocator,
through a C-with-classes-like API. there is little reason why couldn't achieve reasonable OOP performance through a C-with-classes-like API.
As for allocation, we generally expect a dependence on Microsoft's mimalloc. Linking against the Aurora Runtime in the Aurora As for allocation, we generally expect a dependence on Microsoft's mimalloc. Linking against the Aurora Runtime in the Aurora
Ecosystem will automatically replace global allocators with `Aurora::Memory`, which in turn, proxies any other suitable allocator Ecosystem will automatically replace global allocators with `Aurora::Memory`, which in turn, proxies any other suitable allocator
@ -290,11 +292,18 @@ Aurora provides a heap allocator for dividing up a large preallocated region of
### Shared Pointers ### Shared Pointers
By default, AuSPtr is backed by `std::shared_ptr`, extended by `#include <Aurora/Memory/ExtendStlLikeSharedPtr>`. Using this Memory objects, including shared pointers, the object allocation model, and more is defined by AuROXTL. The `AuSPtr` class
class, undefined behaviour on dereference and operator pointer is altered to guarantee an AU_THROW_STRING. Such hacks without is backed by `std::shared_ptr`, extended by `#include <auROXTL/auMemoryModel.hpp>,` in the default configuration.
support for native behaviour from the language drivers themselves can be rather expensive; however, it's an experiment worth
trying now that modern hardware can make up for software and microcode flaws; and architecture translation. Null exception AuROXTL memory primitives, and most STL containers, are source compatible with the base STL classes, such that any Aurora
experiments can be easily disabled or configured from within your AuroraConfiguration.h file globally. specific behaviour is lost during type reduction.
Benefits of using the Aurora extended classes include redefining null dereference and operator pointer access to throw
an AU_THROW_STRING __in an unconfigurated Aurora ecosystem__. Without support for native behaviour from the C++ drivers,
such features can be rather expensive using performace hacks we have available (outside of ripping the compiler apart to emit special
debug info for hacky trap handlers). However, it's an experiment worth trying now that modern hardware can make up for software and
microcode flaws; and architecture translation. Again, this is default behaviour, and can be easily disabled or configured from within
your AuroraConfiguration.h file globally.
``` ```
@ -410,7 +419,8 @@ Example:
## Proccesses ## Proccesses
The Aurora Runtime provides worker process monitoring, worker stdin/out stream redirection process spawning, file The Aurora Runtime provides worker process monitoring, worker stdin/out stream redirection process spawning, file
opening, and url opening functionality. opening, and url opening functionality. Further support was added for asynchronous stdin/out/err redirection, and
a process termination event, through the use of the Loop subsystem.
## Locale ## Locale