• v0.4.1 298f4d0bee

    Dandielo released this 2024-03-17 16:48:49 +00:00 | 44 commits to master since this release

    These are the highlights of a year's worth of work.

    New platforms:

    • Android-armv8, Android-x64 (Gradle)
    • WebAsm-x86_x64 (Emscripten) + WebGPU

    New features:

    • Added 'ICE_ASSERT_CORE' macro as a quicker option for 'ICE_ASSERT'
    • Added new math primitive, the 'array' value.
    • Added 'ice::path::basename'
    • Added 'string::push_format' for modifying strings with FMT format strings.
    • Aliased 'std::bit_cast' in the 'ice' namespace.
    • Aliased 'std::upper_bound' and 'std::lower_bound' in the 'ice' namespace.
    • Implemented std-like 'ice::binary_search'.
    • Implemented expected result type.
    • Implemented coroutine expected result type.
    • Implemented coroutine cancelation tokens.
    • Introduced new 'App' API.
    • Introduced new 'Params' API.
    • Introduced new 'Platform' feature API.
    • Introduced new 'GfxGraph' API allowing for a render graph like workflow.
    • Introduced the 'Hailstorm' binary packaging format as resource provider.

    New tools:

    • hsc_packer - Allows to create HailStorm packs
    • hsc_reader - Allows to inspect (stdout) HailStorm packs

    Refactored systems:

    • The whole dynamic module / module API registration.
    • The whole 'platform' API / project was refactored and reimplemented for all platforms.
    • Partially refactored metadata APIs.
    • Partially refactored resource-system AsyncIO handling.
    • Partially refactored resource-system Filesystem provider APIs.

    Changes:

    • Replaces 'ResultCode' with 'ErrorCode' and 'Expected' types.
    • Using 'vulkan-memory-allocator' library instead of custom solution.
    • Log API now allows for more customization when it comes to user tags.
    • Inputs now can partially handle touch events.
    • DynamicLib provider handles now Unix libraries.
    • FileSystem provider now handles Unix directories and files.
    • FileSystem provider can now process directories asynchronously when synchronizing.
    • Introduces new test cases for various parts of the engine.
    • Profiling no longer enabled by default for 'Develop' configuration.
    • 'InputTracker::process_device_events' arguments now accepting span's of DeviceEvents.
    • 'RenderCommands::begin_renderpass' function now accepts Span of 'const vecf' values.
    • Multi-path Filesystem ResourceProvider now accepts Span of const strings.
    • Relaxed: Allowing to create shards from ShardIDs.
    • Relaxed: Allowing to implicit cast Shards to ShardIDs.
    • Relaxed: UniquePtr arrow-access operator allows to access 'non-const' pointer values form 'UniquePtr const' objects.
    • Relaxed: Metadata is no longer mandatory for resources or assets.

    Fixes:

    • Fixed array clear for some 'complex' types.
    • Fixed 'ManualResetBarrier::set' function not waking up threads when set.
    • Fixed crash in StaticString when created from empty string / nullptr.
    • Fixed log tags not properly being solved in all cases.
    • Fixed missing destruction call to elements if replaced under certain situations.
    • Fixed passing span values to std::sort.
    • Fixed possible crash with LinkedQueueRange 'begin' function.
    • Fixed Resource access using synchronous setup.
    • Fixed a quite rare MT bug in linked queue.
    • Fixed async writer logic allowing to write after free, when async writing was used.
    • Fixed crash when items are released mid-iteration.
    • AND LOTS MORE

    Full Changelog: https://github.com/iceshard-engine/engine/compare/v0.3.1...v0.4.0

    Downloads