diff --git a/README.md b/README.md index 4ab8b8d2..57488586 100644 --- a/README.md +++ b/README.md @@ -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
-Aurora Macro Sugar: 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 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 `. 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 ,` 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