Git Product home page Git Product logo

coris / hybridclr Goto Github PK

View Code? Open in Web Editor NEW

This project forked from focus-creative-games/hybridclr

0.0 0.0 0.0 10.92 MB

HybridCLR是一个特性完整、零成本、高性能、低内存的Unity全平台原生c#热更方案。 HybridCLR is a fully featured, zero-cost, high-performance, low-memory solution for Unity's all-platform native c# hotupdate.

Home Page: https://code-philosophy.com/

License: MIT License

C++ 100.00% C 0.01%

hybridclr's Introduction

HybridCLR

license

logo



HybridCLR is a full-platform native c# hot update solution for Unity with complete features, zero cost, high performance, and low memory.

HybridCLR extends the ability of il2cpp, making it change from pure AOT runtime to 'AOT+Interpreter' runtime, and then natively supports dynamic loading of assembly , so that the games built based on il2cpp backend can be executed not only on the Android platform, but also on IOS, Consoles and other platforms that support only AOT mode.

HybridCLR not only supports the traditional fully interpreted execution mode, but also pioneered Differential Hybrid Execution technique. That is, you can add, delete, or modify the AOT dll at will, and intelligently make the changed or newly added classes and functions run in interpreter mode, but the unchanged classes and functions run in AOT mode, so that the running performance of the hot-updated game logic basically reaches the original AOT level.

Welcome to embrace modern native C# hot update technology! ! !

Documentation

Features

  • Features complete. A nearly complete implementation of the ECMA-335 specification, with only a very small number of unsupported features.
  • Zero learning and use costs. HybridCLR enhances the pure AOT runtime into a complete runtime, making hot update code work seamlessly with AOT code. The script class and the AOT class are in the same runtime, and you can freely write codes such as inheritance, reflection, and multi-threading (volatile, ThreadStatic, Task, async). No need to write any special code, no code generation, almost unlimited.
  • Efficient execution. Implemented an extremely efficient register interpreter, all indicators are significantly better than other hot update schemes. Performance Test Report
  • Memory efficient. The classes defined in the hot update script occupy the same memory space as ordinary c# classes, which is far superior to other hot update solutions. Memory and GC
  • Due to the perfect support for generics, libraries that are not compatible with il2cpp due to AOT generics issues can now run perfectly under il2cpp
  • Support some features not supported by il2cpp, such as __makeref, __reftype, __refvalue directives
  • Differential Hybrid Execution

Working Principle

HybridCLR is inspired by mono's mixed mode execution technology, and provides additional AOT runtimes such as unity's il2cpp The interpreter module is provided to transform them from pure AOT runtime to "AOT + Interpreter" hybrid operation mode.

icon

More specifically, HybridCLR does the following:

  • Implemented an efficient metadata (dll) parsing library
  • Modified the metadata management module to realize the dynamic registration of metadata
  • Implemented a compiler from IL instruction set to custom register instruction set
  • Implemented an efficient register interpreter
  • Provide a large number of instinct functions to improve the performance of the interpreter

The Difference From Other C# Hot-Update Solution

HybridCLR is a native c# hot update solution. In layman's terms, il2cpp is equivalent to the aot module of mono, and HybridCLR is equivalent to the interpreter module of mono, and the combination of the two becomes a complete mono. HybridCLR makes il2cpp a full-featured runtime, natively (that is, through System.Reflection.Assembly.Load) supports dynamic loading of dlls, thereby supporting hot updates of the ios platform.

Just because HybridCLR is implemented at the native runtime level, the types of the hot update part and the AOT part of the main project are completely equivalent and seamlessly unified. You can call, inherit, reflect, and multi-thread at will, without generating code or writing adapters.

Other hot update solutions are independent vm, and the relationship with il2cpp is essentially equivalent to the relationship of embedding lua in mono. Therefore, the type system is not uniform. In order to allow the hot update type to inherit some AOT types, an adapter needs to be written, and the type in the interpreter cannot be recognized by the type system of the main project. Incomplete features, troublesome development, and low operating efficiency.

Supported Versions And Platforms

  • Support 2019.4.x, 2020.3.x, 2021.3.x, 2022.3.x full series of LTS versions. The 2023.2.0ax version is also supported, but not released to the public.
  • Supports all il2cpp supported platforms

Stability Status

HybridCLR has been widely verified as a very efficient and stable solution for hot update of Unity.

The official versions of extremely stable 1.x, 2.x, 3.x and 4.x are currently released, which are sufficient to meet the stability requirements of large and medium-sized commercial projects. At present, at least thousands of commercial game projects are using HybridCLR, and hundreds of them have been launched on multi-platforms. Most top game companies (such as Tencent and NetEase) are already using HybridCLR.

You can read the game projects in top game companies those are using HybridCLR and has been launched.

Support And Contact

  • Official 1 group: 651188171 (full)
  • Novice QQ group 1: 428404198 (full)
  • Novice QQ group 2: 680274677 (recommended)
  • discord channel https://discord.gg/BATfNfJnm2
  • Business cooperation email: business#code-philosophy.com
  • Commercial Support

About The Author

walon : Founder of Code Philosophy (code philosophy)

Graduated from the Department of Physics of Tsinghua University, won the CMO gold medal in 2006, a member of the National Mathematical Olympiad Training Team, and was recommended to Tsinghua University for basic courses. Focus on game technology, good at developing architecture and basic technical facilities.

License

HybridCLR is licensed under the MIT license

hybridclr's People

Contributors

alanliu90 avatar pirunxi avatar rigyuki avatar roland0511 avatar senfee-cheng avatar shuaigao avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.