Releases: BepInEx/BepInEx
BepInEx 5.4.23.4
Check the previous release notes for more information about Doorstop 4.x.
What's Changed
- v5 - Upgrade Doorstop to version 4.4.1 by @arrowmaster in #1156
- Fix incorrect instructions in BUILDING.md by @PhantomGamers in #1175
New Contributors
- @arrowmaster made their first contribution in #1156
- @PhantomGamers made their first contribution in #1175
Full Changelog: v5.4.23.3...v5.4.23.4
β οΈ BepInEx 5 is in long term support (LTS) mode
BepInEx 5.4 is the last version of BepInEx 5 with major updates. Any BepInEx 5 releases starting version 5.4 will be minor and only contain fixes along with package version updates. Our main development focus now shifts to implementing BepInEx 6.
For developers: BepInEx 5 source code is now maintained on v5-lts branch. In turn master branch will start hosting BepInEx 6 source. All PRs regarding BepInEx 5 should be targeting that branch instead of master.
BepInEx 5.4.23.3
Check the previous release notes for more information about Doorstop 4.x.
What's Changed
- [v5-lts] Migrate to sdk-style projects by @kohanis in #894
- Upgrade Doorstop to version 4.4.0 by @ManlyMarco in #1092
New Contributors
Full Changelog: v5.4.23.2...v5.4.23.3
β οΈ BepInEx 5 is in long term support (LTS) mode
BepInEx 5.4 is the last version of BepInEx 5 with major updates. Any BepInEx 5 releases starting version 5.4 will be minor and only contain fixes along with package version updates. Our main development focus now shifts to implementing BepInEx 6.
For developers: BepInEx 5 source code is now maintained on v5-lts branch. In turn master branch will start hosting BepInEx 6 source. All PRs regarding BepInEx 5 should be targeting that branch instead of master.
BepInEx 6.0.0-pre.2
NOTE: This is a pre-release of a major version of BepInEx. BepInEx 5 plugins will not work with this release yet.
About upgrading
This release is mainly meant for those who use current Bleeding Edge builds to mod Il2Cpp games. If you want to use this release, follow this upgrade guide:
- If you use BepInEx 5: Stay on BepInEx 5! The current pre-release does not support loading BepInEx 5 plugins, and there are many issues.
- If you use BepInEx Bleeding Edge builds (builds 697 down to 577): It is recommended that you upgrade to this pre-release and stay on it to ensure all your plugins keep working. Builds after 6.0.0-be.697 will bring many breaking API changes in preparation for the first stable v6 release.
- If you want to mod new Unity Mono games: Consider using BepInEx 5! The API is still stable, and BepInEx 6 will eventually include support for loading BepInEx 5 plugins!
- If you want to mod new Il2Cpp games: Consider using this release until the stable v6 release, or until bleeding edge builds enter the RC (release candidate) stage.
Changelog
The changelog is concerning BepInEx 6.0.0-pre.1
Merged PRs
- Restructure project, add Doorstop 4 support, use CoreCLR for Il2Cpp by @ghorsington in #391
- Add chainloader events by @js6pak in #475
- Warn about outdated wine by @js6pak in #477
- Add a config option to disable xref and disable it by default on x32 by @js6pak in #502
- Bump Il2CppInterop by @js6pak in #503
- Switch to the
developmentbranch of Cpp2IL by @ds5678 in #533 - Bump Cpp2IL by @Kasuromi in #560
- Bump Il2CppInterop to v1.4.4 by @Kasuromi in #561
- Bump Il2CppInterop to v1.4.5 by @Kasuromi in #564
- Bump Il2CppInterop by @Kasuromi in #647
- Don't try to parse the wine version by @js6pak in #555
- Fix argument count when launched with Steam on Linux by @zeroepoch in #563
- Bump Il2CppInterop & Dobby by @Kasuromi in #669
- Fix netfx & netcore build targets, and add target framework variants by @bbepis in #715
- Reimplement UnhollowedAssembliesPath config option as IL2CPPInteropAssembliesPath by @Kokaiinum in #734
- Fix manager GameObject not having a name by @ManlyMarco in #735
- run_bepinex*.sh: self-relaunch improvements by @astiob in #692
- Bump Cpp2IL & Il2CppInterop by @Kasuromi in #869
- Upgrade doorstop to version 4.2.0 (v6) by @aldelaro5 in #865
- Upgrade AssetRipper.Primitives to avoid implying Json 8.0.1 by @decaprime in #873
- Upgrade Doorstop to 4.3.0 (v6) by @aldelaro5 in #901
- Upgrade Harmonyx, Iced and AssetRipper.Primitives packages by @aldelaro5 in #953
New Contributors
- @ds5678 made their first contribution in #533
- @Kokaiinum made their first contribution in #734
- @decaprime made their first contribution in #873
Full Changelog: v6.0.0-pre.1...v6.0.0-pre.2
BepInEx 5.4.23.2
Doorstop has been upgraded from v3.4 to v4.3, bringing some new features for developers. It's for the most part a drop-in replacement.
- Doorstop 4 debugging works on all platforms and IDEs that supports regular unity remote debugging (previously dnspy debugging had to be used, which is windows only and can't be used with an IDE).
- It's possible to specify a custom corlib path for messing with game's mono runtime.
- The unix zip is now split into linux_x86, linux_x64 and macos_x64.
β οΈ The macos_x86 target was dropped and won't get any further releases (discussed on Discord). You can still use BepInEx 5.4.22 if it's necessary.β οΈ Settings in doorstop_config.ini were renamed, old config files will no longer work.β οΈ If you modified or wrote your own launch scripts, they may need to be fixed because the order of arguments passed to doorstop changed.- See the description of #762 for details.
What's Changed
- Upgrade Doorstop to version 4.3.0 by @aldelaro5 in #900
- Upgrade Doorstop to version 4.2.0 by @aldelaro5 in #864
- Upgrade Doorstop to version 4.1.0 by @aldelaro5 in #762
- Normalize EOL for .sln (CRLF) and .cs, .sh (LF) by @toebeann in #700
- run_bepinex.sh: self-relaunch improvements by @astiob in #693
New Contributors
- @aldelaro5 made their first contribution in #762
- @toebeann made their first contribution in #700
Full Changelog: v5.4.22...v5.4.23.1
β οΈ BepInEx 5 is in long term support (LTS) mode
BepInEx 5.4 is the last version of BepInEx 5 with major updates. Any BepInEx 5 releases starting version 5.4 will be minor and only contain fixes along with package version updates. Our main development focus now shifts to implementing BepInEx 6.
For developers: BepInEx 5 source code is now maintained on v5-lts branch. In turn master branch will start hosting BepInEx 6 source. All PRs regarding BepInEx 5 should be targeting that branch instead of master.
BepInEx 5.4.22
β οΈ BepInEx 5 now enters long term support (LTS) mode
BepInEx 5.4 is the last version of BepInEx 5 with major updates. Any BepInEx 5 releases starting version 5.4 will be minor and only contain fixes along with package version updates. Our main development focus now shifts to implementing BepInEx 6.
For developers: BepInEx 5 source code is now maintained on v5-lts branch. In turn master branch will start hosting BepInEx 6 source. All PRs regarding BepInEx 5 should be targeting that branch instead of master.
What's Changed
- fix: handle parameter spread for lts version by @Danielduel in #496
- Add TomlTypeConverter for UnityEngine.Rect by @ManlyMarco in #510
- Fix logging "1 plugins to load" instead of "1 plugin to load" by @ManlyMarco in #653
- Make Logger.Listeners and Logger.Sources thread safe by @ManlyMarco in #656
- Fix argument count when launched with Steam on Linux by @zeroepoch in #562
New Contributors
- @Danielduel made their first contribution in #496
Full Changelog: v5.4.21...5.4.22
BepInEx 6.0.0-pre.1
NOTE: This is a pre-release of a major version of BepInEx. BepInEx 5 plugins will not work with this release yet.
WARNING: This pre-release is fairly old and the latest IL2CPP games are unlikely to work with it. It's recommended to use the latest bleeding edge builds instead.
About upgrading
This release is mainly meant for those who use current Bleeding Edge builds to mod Il2Cpp games. If you want to use this release, follow this upgrade guide:
- If you use BepInEx 5: Stay on BepInEx 5! The current pre-release does not support loading BepInEx 5 plugins, and there are many issues.
- If you use BepInEx Bleeding Edge builds (builds 577 and lower): It is recommended that you upgrade to this pre-release to ensure all your plugins keep working. All builds after 6.0.0-be.577 will not be compatible with newer BE builds. To upgrade, simply download the appropriate ZIP below and replace your old files with the new ones.
- If you want to mod new Unity Mono games: Consider using BepInEx 5! The API is still stable, and BepInEx 6 will eventually include support for loading BepInEx 5 plugins!
- If you want to mod new Il2Cpp games: Consider using Bleeding Edge builds! Builds after 6.0.0-be.577 use updated tooling and .NET 6 for Il2Cpp. This pre-release is mainly meant for those who already have existing Il2Cpp plugins and can't upgrade at the moment.
Changelog
The changelog is concerning BepInEx 5
New features
- The project was restructured massively to allow extensibility to new game engines and runtimes
BepInEx.dllwas renamed toBepInEx.Core.dllBepInEx.Preloader.dllwas renamed toBepInEx.Preloader.Core.dll- Code to support Unity Mono games was moved to
BepInEx.Unity.dllandBepInEx.Preloader.Unity.dll
- Added official support for new runtimes:
- Unity Il2Cpp: an ahead-of-time compilation tool used by Unity
- .NET Framework for games that use .NET game engines (e.g. XNA, MonoGame)
- .NET Core for games that use .NET Core-based engines (e.g. Silk)
- Added new attribute-based preloader patch syntax (Example)
- Plugin versions are now required to follow semver 2.0.0
- The
x.y.z.wform will still be accepted, but thewpart will be ignored for all but logging purposes
- The
- Allow piping BepInEx console to Unix terminal on Wine as well (#322)
API improvements
BepInDependencynow supports specifying version ranges for the dependencies using npm version range syntaxManualLogSourcenow includes overloads for interpolated string handlers to improve logging performanceConfigEntryBaseconstructor is now marked asprotectedto allow use in custom config entries (#403)ConfigFile.Valuesis now marked aspublicfor consistency withConfigFile.Keysproperty
Dependency upgrades, new dependencies
- Updated HarmonyX to 2.10.0
- Updated MonoMod to 22.5.1.1
- Il2Cpp: Added Cpp2IL
- Il2Cpp: Added fork of Il2CppAssemblyUnhollower
- Il2Cpp: Added fork of mono runtime
Fixes
- Fixed crashes on Unity 4 games caused by
ThreadingHelper - Improved console output on Unix (both Wine and native Unix games)
- Improved file logging especially for concurrent game runs
- Fixed multiple BepInEx instances running the chainloader at the same time (#322)
- Optimized log source and log listener event handling
- Fixed possible crashes when trying to query for Unity version (#229)
- Fixed not detecting plugins with indirect BepInEx reference (#240)
- Improved logging for plugin dependency loading errors
- Fixed possible console-related crashes in Wine (#325)
- Fixed game crashes when a console cannot be allocated on Windows
Deprecations and other housekeeping
- Removed
BepInEx.Patcher(hardpatcher for mono and .NET games) - Upgraded all projects to the new csproj format
- Removed all submodules in favour of using NuGet to manage external dependencies
- Removed all Harmony version wrappers
- Removed the deprecated
BepInEx.Harmonyassembly - Improved ZIP naming to include consistent OS and Architecture identifiers
BepInEx 5.4.21
β οΈ BepInEx 5 now enters long term support (LTS) mode
BepInEx 5.4 is the last version of BepInEx 5 with major updates. Any BepInEx 5 releases starting version 5.4 will be minor and only contain fixes along with package version updates. Our main development focus now shifts to implementing BepInEx 6.
For developers: BepInEx 5 source code is now maintained on v5-lts branch. In turn master branch will start hosting BepInEx 6 source. All PRs regarding BepInEx 5 should be targeting that branch instead of master.
Changelog
- Fixed new
Unity.InputSystemsupport breaking on some Unity games (#446)
BepInEx 5.4.20
β οΈ BepInEx 5 now enters long term support (LTS) mode
BepInEx 5.4 is the last version of BepInEx 5 with major updates. Any BepInEx 5 releases starting version 5.4 will be minor and only contain fixes along with package version updates. Our main development focus now shifts to implementing BepInEx 6.
For developers: BepInEx 5 source code is now maintained on v5-lts branch. In turn master branch will start hosting BepInEx 6 source. All PRs regarding BepInEx 5 should be targeting that branch instead of master.
Changelog
- Fixed
KeyboardShortcutnot working on games that useUnity.InputSysteminstead of the legacy input system- This version additionally exposes
UnityInputto manually check for input in a library-agnostic way. Note that using this API is discouraged! Instead, useKeyboardShortcutto ensure plugin compatibility
- This version additionally exposes
BepInEx 5.4.19
β οΈ BepInEx 5 now enters long term support (LTS) mode
BepInEx 5.4 is the last version of BepInEx 5 with major updates. Any BepInEx 5 releases starting version 5.4 will be minor and only contain fixes along with package version updates. Our main development focus now shifts to implementing BepInEx 6.
For developers: BepInEx 5 source code is now maintained on v5-lts branch. In turn master branch will start hosting BepInEx 6 source. All PRs regarding BepInEx 5 should be targeting that branch instead of master.
Changelog
- Added basic fix for cases where games try to ship their own Harmony
- Updated HarmonyX to 2.9.0
- Updated MonoMod to 22.01.29.01
BepInEx 5.4.18
β οΈ BepInEx 5 now enters long term support (LTS) mode
BepInEx 5.4 is the last version of BepInEx 5 with major updates. Any BepInEx 5 releases starting version 5.4 will be minor and only contain fixes along with package version updates. Our main development focus now shifts to implementing BepInEx 6.
For developers: BepInEx 5 source code is now maintained on v5-lts branch. In turn master branch will start hosting BepInEx 6 source. All PRs regarding BepInEx 5 should be targeting that branch instead of master.
Changelog
- Fixed some console messages being cut off (especially if using non-ASCII characters)
- Updated HarmonyX to 2.7.0
- Updated MonoMod to 21.12.13.01