Library
The library can be build on all platforms a .NET SDK is available. Build options:
dotnet
CLI - 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
AccessViolationException
while debugging. Best case. The stacktrace on dev machine may show the root cause.A Segmentation fault ⋅ Wikipedia on customer installs without stacktrace.
An
Exception
which 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
Exception
showing 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