Releases: nosoop/SMExt-SourceScramble
Release list
0.8.2.1
Important
If you are using SourceMod 1.13.0.7354 or newer (currently unstable), use the -api9 packages. The package.zip / package.tar.gz file names are reserved for builds that target the stable version of SourceMod.
See the 0.8.2 release notes for the actual important info.
Fixed
- Packages now actually includes 64-bit builds of the extensions. They were previously omitted due to a mistake in the packaging stage. (Thanks @Mikusch for the heads-up.)
Opaque remote-only CI is a miserable dumpster fire
0.8.2
Important
If you are using SourceMod 1.13.0.7354 or newer (currently unstable), use the -api9 packages. The package.zip / package.tar.gz file names are reserved for builds that target the stable version of SourceMod.
Added
- SourceMod 1.13 (extension API v9) builds.
Fixed
- The extension should run on older Linux distributions once again; builds now use the AlliedModders build container, which uses Debian 11 with backported Clang 22 (and ships with
ambuildpreinstalled).
0.8.1.1
Codebase is identical to 0.8.1, except we now use Ubuntu 22.04 runners for the Linux build since those are the oldest ones currently offered by Github as of two weeks ago.
Outside of lacking extrinsic motivation to build it out myself, I'd be open to supporting 20.04 builds.
If you'd like to tackle it, stepchowfun/toast seems like a nice way to set up an environment.
A chroot is probably fine too.
Opaque remote-only CI is a miserable dumpster fire
0.8.1
0.8.0
This release adds 64-bit support to some extent.
package.tar.gz includes both 32- and 64-bit versions of the extension for Linux servers, while package.zip includes the same for Windows servers.
This release is compiled against SourceMod and Metamod:Source 1.12.
It may be backwards compatible with SourceMod 1.11 as the 0.8.0-pre1 release could be used with it, but I make no guarantees on that since I no longer have a server running 1.11 due to SDK changes.
Most of the release is unchanged from the prerelease builds, except it now tracks the stable 1.12 branches of dependencies instead of master, plus the merge of a feature PR.
Added
- Preliminary 64-bit support. This is 'preliminary' because upstream SourceMod currently doesn't define support for 64-bit addressing.
- Because SourceMod's scripting interface only supports a one-to-one mapping of
Addressvalues on 32-bit platforms and is outright broken on 64-bit (no, the pseudoaddress system is not a working solution), the following properties and natives will currently throw errors when accessed on a 64-bit server:MemoryPatch.Address,MemoryBlock.Address,GetAddressOfCell, andGetAddressOfString. - This behavior is expected to change in the future once SourceMod has finalized on how to properly handle 64-bit addresses. If SourceMod doesn't make a decision, I may introduce my own type for this extension, but for now I'm opting not to so we can save potential compatibility headaches down the line.
- For 64-bit servers, statically defined patches will work; anything that requires a plugin to write on top of the patch at runtime will not work at this time (since that requires
StoreToAddress, which relies on a workingAddressrepresentation).
- Because SourceMod's scripting interface only supports a one-to-one mapping of
sourcescrambleis now registered as a shared library. (#24)
Changed
MemoryBlock.LoadFromOffsetandMemoryBlock.StoreToOffsetare now native functions instead of being wrappers around SourceMod'sLoadFromAddressandStoreToAddress, to allow for in-block memory accesses on 64-bit servers.- Plugins will need to be recompiled against the new version if they want to target 64-bit servers, otherwise they will continue to function as they did on 32-bit platforms.
- Recompiled plugins will not work on Source Scramble versions prior to 0.8.0.
- As we no longer use
StoreToAddress,MemoryBlockinstances are now instantiated with+rwxto maintain existing intent (#7). - The built-in patch manager was modified to not use
MemoryPatch.Addressas part of its output so it continues to work on both 32- and 64-bit platforms.
0.8.0-pre2
Fixed
MemoryBlock.StoreToOffsetno longer erroneously falls through on the switch case that identifies the size of the write. This was a regression introduced in 0.8.0-pre1.
0.8.0-pre1
Prerelease build for 64-bit support.
package.tar.gz includes both 32- and 64-bit versions of the extension for Linux servers, while package.zip includes the same for Windows servers. It looks like the extensions work fine for SM 1.11 even though they're currently compiled against the latest commit, so plugins that are built against the latest version of the extension can run without issue there.
Added
- Preliminary 64-bit support.
- Because SourceMod's scripting interface only supports a one-to-one mapping of
Addressvalues on 32-bit platforms and is outright broken on 64-bit (no, the pseudoaddress system is not a working solution), the following properties and natives will currently throw errors when accessed on a 64-bit server:MemoryPatch.Address,MemoryBlock.Address,GetAddressOfCell, andGetAddressOfString. - This behavior is expected to change in the future once SourceMod decides to properly handle 64-bit addresses. If SourceMod doesn't make a decision, I may introduce my own type for this extension, but for now I'm opting not to so we can save potential compatibility headaches down the line.
- Statically defined patches will work; anything that requires a plugin to write on top of the patch at runtime will not work at this time.
- Because SourceMod's scripting interface only supports a one-to-one mapping of
Changed
MemoryBlock.LoadFromOffsetandMemoryBlock.StoreToOffsetare now native functions instead of being wrappers around SourceMod'sLoadFromAddressandStoreToAddress, to allow for in-block memory accesses on 64-bit servers.- Plugins will need to be recompiled against the new version if they want to target 64-bit servers, otherwise they will continue to function as they did on 32-bit platforms.
- Recompiled plugins will not work on Source Scramble versions prior to 0.8.0.
- As we no longer use
StoreToAddress,MemoryBlockinstances are now instantiated with+rwxto maintain existing intent (#7). - The built-in patch manager was modified to not use
MemoryPatch.Addressas part of its output so it continues to work on both 32- and 64-bit platforms.
0.7.1.4
Another sub-patch release; this is functionally identical to 0.7.1.
Changed
- The automated builds now targets SM 1.11 with Ubuntu 20.04. 0.7.1.3 was using 22.04 runners, which caused the extension to not load on servers with older glibc releases. (#20)
