v1.0

Overview

Diarkis has finally released version 1.0, three years after the initial release!

Major Updates

  • The Field has been updated

    • It now supports synchronization across Grids within the Field of Vision.

    • Optimizations have been made to reduce server load.

    • Various bugs have been fixed.

    • IDiarkisField::SyncInit() has been deprecated and IDiarkisField::Join() has been added.

    • DiarkisField::Leave() command has been added.

  • A new Session module has been added.

Server

Compared to v0.9, internal communication efficiency has been improved, internal code has been refactored, test scenarios have been enhanced, thus significantly boosting performance.

  • Core

    • Added DiarkisExec package to simplify server setup.

    • Added a mechanism to cache MARS addresses for a certain period in the mesh module.

    • Changed package names roomSupport and groupSupport to camel case as roomSupport and groupSupport.

    • Added an echo handler.

    • If a structure provided to the logging function implements the String() interface, the return value of String() will be output.

    • Disabled dual stack when Diarkis server obtains its own IP address.

    • Locked mesh send callbacks to prevent critical issues.

    • Fixed simultaneous iteration and map writing in vault's map to prevent critical issues.

    • Added context to notify timeout for OnStop and OnTerminate.

  • Direct Message

    • Fixed the issue where DM users would send disconnect messages with incorrect versions and commands.

    Dive

    • Added IncrBy and IncrByEx.

    • Added OnReady.

    • Changed Dive data type from interface{} to []byte.

    • Fixed the issue where Dive's byte fixed size was too small.

    • Fixed shutdown prevention issue in the Dive module.

    Field

    • Improved the Field algorithm, enhancing performance and availability.

    • Fixed the issue where custom filters in Field were executed on the front server instead of the storage server.

    • Enhanced the performance of the Field module.

    • Fixed the issue where the Leave command ID in Field used the same command ID as room chat.

    • Added Join command, allowing Sync, Disappear, and Leave to function following Join.

    Group

    • Fixed issues related to Join.

    MatchMaker

    • Added onMatchedTicketTimeout to handle member ticket timeouts.

    • Updated ticket properties.

    Mesh

    • Fixed sharedData update issue when keys were full.

    • Ensured announcer stops after finishing tasks.

    Metrics

    • Fixed packet count metrics and added packet size metrics.

    Puffer

    • Added support for property comments and case sensitivity to improve JSON parsing.

    • Ensured protocol names are unique within each package.

    • Added constants Ver and Cmd to protocol codes.

    • Changed file generation permissions from 755 to 644.

    Room

    • Fixed issue where the room would not empty when a user unexpectedly disconnects and reconnects with the same user ID.

    • Prevented room ID duplication.

    • Modified UpdateProperties and IncrProperty to avoid updating room TTL.

    • Fixed issue with lock leak due to mutex.

    • Changed log levels for room message/announce.

    • Fixed parameter names in SetOnMigrated callback.

    Session

    • Modified Session invitations to avoid retaining invitation data per user.

    • Added session commands to obtain member ID and count when SessionType is specified.

    • Prevented race conditions in setTypeByUser and removeTypeByUser.

    Go Client

    • Added Debug command.

Client

  • Diarkis Runtime

    • General

    • P2P

      • Added explicit disconnection functionality to the P2P module.

      • Improved hole-punching process.

      • Changed communication intervals for hole-punching to increase progressively with retry attempts.

      • Added debug feature to simulate hole-punching failures.

  • Diarkis Module

    • Added functionality to set custom allocators that replace memory allocation processes within Diarkis runtime.

      • Implement a custom allocator by inheriting ICustomAllocator and replace the allocator with Diarkis::SetCustomAllocator().

    • Added types for the std library using custom allocators.

      • Includes Diarkis::StdString and Diarkis::StdVector, using these types within Diarkis to use std containers.

    • Added DiarkisInit/DiarkisDestroy functions to the Base class, initializing the logger in DiarkisInit.

    • Added Trace log level.

    • Displayed Diarkis client version in logs.

    • Various bug fixes and optimizations.

  • Samples

    • Added session_simple sample.

    • Added directmessage_simple sample.

    • Added Android sample.

    • Added iOS sample.

Last updated