[*] 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:
* [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) \
Doxygen: \
Tests: [Hello Aurora](https://gitea.reece.sx/AuroraSupport/HelloAurora) \
Cmake-stable: \
Build Pipeline: https://git.reece.sx/AuroraPipeline/Build \
API Docs: \
Tests and Examples: [Hello Aurora](https://gitea.reece.sx/AuroraSupport/HelloAurora) \
Build Pipeline: [Aurora Build](https://git.reece.sx/AuroraPipeline/Build) (Lua/Premake) \
Donate / Other Links: [Reece.SX](https://reece.sx/#contact) \
Discord: [Invite](https://discord.gg/XYjCGWWa4J)
## Performance
@ -78,9 +77,9 @@ Defer to benchmarks
## Utilities
Aurora Sugar: https://git.reece.sx/AuroraSupport/auROXTL/src/branch/master/Include/auROXTLUtils.hpp <br>
Aurora Macro Sugar: https://git.reece.sx/AuroraSupport/auROXTL/src/branch/master/Include/auROXTL/AU_MACROS.hpp <br>
Aurora Overloadable Type Declerations: https://git.reece.sx/AuroraSupport/auROXTL/src/branch/master/Include/auROXTLTypedefs.hpp
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: [Main Header](https://git.reece.sx/AuroraSupport/auROXTL/src/branch/master/Include/auROXTL/AU_MACROS.hpp) \
Aurora Overloadable Type Declerations: [Main Header](https://gitea.reece.sx/AuroraSupport/auROXTL/src/branch/master/Include/auROXTLTypes.hpp)
## Logging
@ -200,13 +199,16 @@ POSIX:
## 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.
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
loop source removal or reinsert hints from the return values of the subscription interface. In addition, the ILoopSource interface
permits arbitrary is-signaled-and-latch (TryLock) queries.
loop source removal or no-action replies from the subscription interface. In addition, the ILoopSource interface permits arbitrary
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
Objects are allocated across API/Module boundaries; and so long as the high level API design isn't horribly inefficient, the
cache invalidation and indirect lookups should be minimalized. On modern hardware, indirect branching versus short jumps aren't
so expensive, and in combination with a fast enough allocator, it's a model that could provide reasonable OOP performance
through a C-with-classes-like API.
Objects are allocated across API/Module boundaries. So long as the high level API design isn't horribly inefficient to an extent
that cache invalidation and indirect lookups are minimalized, object-heavy code can optimized. On modern hardware, legitmate indirect
branching versus short jumps aren't so expensive between modules in real world usage; and in combination with a fast enough allocator,
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
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
By default, AuSPtr is backed by `std::shared_ptr`, extended by `#include <Aurora/Memory/ExtendStlLikeSharedPtr>`. Using this
class, undefined behaviour on dereference and operator pointer is altered to guarantee an AU_THROW_STRING. Such hacks without
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
experiments can be easily disabled or configured from within your AuroraConfiguration.h file globally.
Memory objects, including shared pointers, the object allocation model, and more is defined by AuROXTL. The `AuSPtr` class
is backed by `std::shared_ptr`, extended by `#include <auROXTL/auMemoryModel.hpp>,` in the default configuration.
AuROXTL memory primitives, and most STL containers, are source compatible with the base STL classes, such that any Aurora
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
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