Library
The library can be build on all platforms a .NET SDK is available. Build options:
dotnetCLI - Windows, macOS, LinuxRider - Windows, macOS, Linux (untested)
Visual Studio 2022 - Windows
Visual Studio Code - Windows, macOS, Linux (untested)
Supported Platforms
Builds tested on: Windows, macOS, Linux, WASM / WebAssembly, Unity, Godot, MonoGame.
Assembly (dll)
This library is using only verifiably safe code.
<AllowUnsafeBlocks>false</AllowUnsafeBlocks>. No use of Unsafe code ⋅ Microsoft - "Unsafe code may cause memory corruption and introduces security and stability risks".Access violation bugs caused by unsafe code on customer installs provide often no stacktrace when crashing.
Typical random behavior using unsafe code:
Expected behavior.
An
AccessViolationExceptionwhile debugging. Best case. The stacktrace on dev machine may show the root cause.A Segmentation fault ⋅ Wikipedia on customer installs without stacktrace.
An
Exceptionwhich is unrelated to the root cause.native memory: leaks, dangling pointers or wild pointers
Nothing happens - no exception. Worst case.
Exploit execution of malicious code. Even worse. 😁
Behavior of safe code:
Expected behavior.
An
Exceptionshowing the root cause of a bug.
Pure C# implementation - no C/C++ bindings slowing down runtime / development performance.
The C# API is CLS-compliant ⋅ Microsoft.
No custom C# preprocessor directives which requires custom builds to enable / disable features.
Deterministic dll build.
No 3rd party dependencies.
It requires Friflo.Json.Fliox which is part of this repository.
Build
Size: Friflo.Engine.ECS.dll: ~ 210 kb. Implementation: ~ 17.500 LOC.
Build time Windows: ~ 5 seconds, macOS (M2): 2,5 seconds.
Code coverage of the unit tests: 99,9%. See: code-coverage.md.
Unit test execution: ~ 1 second.
The nuget package contains four dll's specific for: .NET Standard 2.1 .NET 6 .NET 7 .NET 8. This enables using the most performant features available for each target. E.g. Some SIMD intrinsics methods available on .NET 7 and .NET 8 but not on earlier versions.
Last updated