Releases: innative-sdk/innative
inNative Runtime v0.2.0
This is a major feature release of inNative for Windows and Linux, focused on standardizing on cmake, switching to using vcpkg, and adding NixOS support.
- Updated to LLVM 13
- Bumped minimum C++ standard version to C++17
- Overhauled JIT to reduce LLVM source hacks to just one
- Switched to vcpkg on windows and deprecated the LLVM fork
- Completely changed directory structure to better align with Linux while still theoretically allowing cross-platform compilation
- Added Nix flake
- Removed Docker support
- Removed flatpak support
- Removed Makefiles
- 32-bit rebuilt files no longer provided
- Removed llvm build script for both platforms.
- The static lib version of innative no longer includes all of LLVM, because on windows with multiple architectures this created a library larger than 4 GB.
Windows
Windows includes an installer for the runtime package that installs and registers the runtime to run WebAssembly files. However, even if you download the portable zip file version, you can always install it using ./innative-cmd.exe -i
.
Windows SDK
- 64-bit portable:
innative-windows-sdk-x64.zip
Windows Runtime
- 64-bit installer:
innative-windows-runtime-x64.msi
- 64-bit portable:
innative-windows-runtime-x64.zip
inNative Runtime v0.1.10
This is a major feature release of inNative for Windows and Linux, focused on fixing the build system to make it more reliable on Linux. This is to compensate for the fact that it is not possible to easily build portable binaries for Linux because LLVM cannot work in holybuildbox. As a result, no more Linux binaries will be provided, and instead CMake should be used to compile from source.
- Deprecated Makefiles in favor of CMake projects. (#33)
- Added #49 WASM instruction execution counter
- Added #26 full assemblyscript support
- Added #20 option to set a custom start function
- Fixed #71 edge-case when processing debug information
- Fixed #72 absolute paths when using shared libraries
- Fixed incorrect llvm::Twine usage
- Changed logging to use a callback function
- Stopped using greedy allocator for memory intensive debug information
- Fixed excessive memory usage during WAT parsing
Windows
Windows includes an installer for the SDK and runtime package that installs and registers the runtime to run WebAssembly files. However, even if you download the portable zip file version, you can always install it using ./innative-cmd.exe -i
.
Windows SDK
- 64-bit installer:
innative-windows-sdk-x64.msi
- 32-bit installer:
innative-windows-sdk-x86.msi
- 64-bit portable:
innative-windows-sdk-x64.zip
- 32-bit portable:
innative-windows-sdk-x86.zip
Windows Runtime
- 64-bit installer:
innative-windows-runtime-x64.msi
- 32-bit installer:
innative-windows-runtime-x86.msi
- 64-bit portable:
innative-windows-runtime-x64.zip
- 32-bit portable:
innative-windows-runtime-x86.zip
inNative Runtime v0.1.9
This is a bugfix release of inNative for Windows and Linux, improving the JIT and debugging. Note that because this release involves a change to LLVM, you will need to redownload LLVM or recompile the fork.
- Partially fixed CI testing
- Fixed improper use of functions across DLL boundary
- Improved JIT error reporting
- Fixed debug variable scoping issue
- Modified LLVM's JIT to support loading DLLs from .lib files
This release features contributions from @Connicpu
Windows
Windows includes an installer for the SDK and runtime package that installs and registers the runtime to run WebAssembly files. However, even if you download the portable zip file version, you can always install it using ./innative-cmd.exe -i
.
Windows SDK
- 64-bit installer:
innative-windows-sdk-x64.msi
- 32-bit installer:
innative-windows-sdk-x86.msi
- 64-bit portable:
innative-windows-sdk-x64.zip
- 32-bit portable:
innative-windows-sdk-x86.zip
Windows Runtime
- 64-bit installer:
innative-windows-runtime-x64.msi
- 32-bit installer:
innative-windows-runtime-x86.msi
- 64-bit portable:
innative-windows-runtime-x64.zip
- 32-bit portable:
innative-windows-runtime-x86.zip
Linux
Linux does not currently have a .dpk
installer, so only portable versions are offered. Linux also only offers 64-bit compiled versions, for the moment. However, you can still install it using sudo ./innative-cmd -i
. There is also a flatpak package available.
Linux SDK
- 64-bit portable:
innative-posix-sdk-x64.tar.gz
SHA1 hash:d8af8d1ec54a24543bd766123cc3d5f549fbd93d
Linux Runtime
- 64-bit portable:
innative-posix-runtime-x64.tar.gz
SHA1 hash:1fad26ac0aa759ac64dc4c413dbec5b0f3ed10d1
inNative Runtime v0.1.8
This is a major feature release of inNative for Windows and Linux, focused on implementing recent feature proposals merged into the current WebAssembly spec, and introducing an optional JIT compiler to assist with rapid iteration without requiring a separate WebAssembly runtime.
- Add #35 Threads support according to the current proposal
- Add #53 JIT support in addition to AoT compilation.
- Add #54 Bulk Memory operations according to the current proposal
- Add #39 Multi-value support, which was recently standardized.
- Add #9 non-trapping conversion instructions, which were recently standardized.
- Add #10 sign-extension operators, which were recently standardized.
- Fix
__chkstk
implementation on windows - Remove homogeneous functions and replace them with generic accessors that all use
void(char* params, char* returns)
which can be used for evaluating parameters and results at runtime. - Introduced a flag that will eventually be required when
__cdecl
function wrapping is re-introduced, necessary to deal with multiple returns. - Introduced JIT-specific versions of
GetFunction
/GetTable
/GetGlobal
/etc. - Fixed an ABI issue on 32-bit windows.
- Added preliminary Nix support to simplify Linux compilation
This release features contributions from @Connicpu
Windows
Windows includes an installer for the SDK and runtime package that installs and registers the runtime to run WebAssembly files. However, even if you download the portable zip file version, you can always install it using ./innative-cmd.exe -i
.
Windows SDK
- 64-bit installer:
innative-windows-sdk-x64.msi
- 32-bit installer:
innative-windows-sdk-x86.msi
- 64-bit portable:
innative-windows-sdk-x64.zip
- 32-bit portable:
innative-windows-sdk-x86.zip
Windows Runtime
- 64-bit installer:
innative-windows-runtime-x64.msi
- 32-bit installer:
innative-windows-runtime-x86.msi
- 64-bit portable:
innative-windows-runtime-x64.zip
- 32-bit portable:
innative-windows-runtime-x86.zip
Linux
Linux does not currently have a .dpk
installer, so only portable versions are offered. Linux also only offers 64-bit compiled versions, for the moment. However, you can still install it using sudo ./innative-cmd -i
. There is also a flatpak package available.
Linux SDK
- 64-bit portable:
innative-posix-sdk-x64.tar.gz
SHA1 hash:19750317fa31b93c52d20cd37df50460decf6164
Linux Runtime
- 64-bit portable:
innative-posix-runtime-x64.tar.gz
SHA1 hash:1f367c34a853c5ef5b767b130ead3cf4918b590a
inNative Runtime v0.1.8-RC1
This is a release candidate build of inNative, only intended to test out new features.
- Add #35 Threads support according to the current proposal
- Add #53 JIT support in addition to AoT compilation.
- Add #54 Bulk Memory operations according to the current proposal
- Add #39 Multi-value support, which was recently standardized.
- Add #9 non-trapping conversion instructions, which were recently standardized.
- Add #10 sign-extension operators, which were recently standardized.
- Fix
__chkstk
implementation on windows - Remove homogeneous functions and replace them with generic accessors that all use
void(char* params, char* returns)
which can be used for evaluating parameters and results at runtime. - Introduced a flag that will eventually be required when __cdecl function wrapping is re-introduced, necessary to deal with multiple returns.
- Introduced JIT-specific versions of GetFunction/GetTable/GetGlobal/etc.
- Broke everything on Linux :-)
This release candidate has a known bug with the JIT test failing in debug mode, and fails some of the webassembly core tests.
Windows
Only zip files have been made available for this release candidate.
Linux
Not available for this pre-release.
inNative Runtime v0.1.7
This is the LLVM 10 upgrade #52 , and comes with a new prebuilt LLVM version, which now includes both LLD and LLVM by necessity. A change in LLVM 10 means that you cannot use LLVM built with C++14 with a project that uses C++17 - you must recompile the entire project. As a result the entire LLVM project has to be recompiled for inNative, even though the only fork changes are in LLD. As an upside, this has significantly simplified packaging.
- Upgrade to LLVM 10
- Simplify LLVM packaging
- Fix missing
void
type check in debug info - Improve handling of invalid clang debug information by only skipping to the next function instead of skipping the debug information entirely.
- If
is_stmt
is found, only emit debug lines for those statements to improve debugging experience. - Refactor hash iterators to remove a use-after-free memory error
- Fix PDB handling for certain kinds of arrays.
- Fix code offset when compiling multiple files.
Windows
Windows includes an installer for the SDK and runtime package that installs and registers the runtime to run WebAssembly files. However, even if you download the portable zip file version, you can always install it using ./innative-cmd.exe -i
.
Windows SDK
- 64-bit installer:
innative-windows-sdk-x64.msi
- 32-bit installer:
innative-windows-sdk-x86.msi
- 64-bit portable:
innative-windows-sdk-x64.zip
- 32-bit portable:
innative-windows-sdk-x86.zip
Windows Runtime
- 64-bit installer:
innative-windows-runtime-x64.msi
- 32-bit installer:
innative-windows-runtime-x86.msi
- 64-bit portable:
innative-windows-runtime-x64.zip
- 32-bit portable:
innative-windows-runtime-x86.zip
Linux
Linux does not currently have a .dpk
installer, so only portable versions are offered. Linux also only offers 64-bit compiled versions, for the moment. However, you can still install it using sudo ./innative-cmd -i
. There is also a flatpak package available.
Linux SDK
- 64-bit portable:
innative-posix-sdk-x64.tar.gz
SHA1 hash:2933ad338d2cd36adbc6e1793d228571e0b300ad
Linux Runtime
- 64-bit portable:
innative-posix-runtime-x64.tar.gz
SHA1 hash:e7927e97649f12bf6256f20872a61c6fad4a5758
inNative Runtime v0.1.6
This is a bugfix release that improves debug handling and removes some of the harsher checks for tags, allowing debug info parsing to continue even if unexpected tags are encountered.
- Ignore unexpected DWARF tags
- Fix array parsing for DWARF
- Add proper array debugging to NatVis
- Autoserialize WASM modules with no debug info so you can step through the WAT representation
- Fix variadic function parameter handling in DWARF
- General refactoring and cleanup
Windows
Windows includes an installer for the SDK and runtime package that installs and registers the runtime to run WebAssembly files. However, even if you download the portable zip file version, you can always install it using ./innative-cmd.exe -i
.
Windows SDK
- 64-bit installer:
innative-windows-sdk-x64.msi
- 32-bit installer:
innative-windows-sdk-x86.msi
- 64-bit portable:
innative-windows-sdk-x64.zip
- 32-bit portable:
innative-windows-sdk-x86.zip
Windows Runtime
- 64-bit installer:
innative-windows-runtime-x64.msi
- 32-bit installer:
innative-windows-runtime-x86.msi
- 64-bit portable:
innative-windows-runtime-x64.zip
- 32-bit portable:
innative-windows-runtime-x86.zip
Linux
Linux does not currently have a .dpk
installer, so only portable versions are offered. Linux also only offers 64-bit compiled versions, for the moment. However, you can still install it using sudo ./innative-cmd -i
. There is also a flatpak package available.
Linux SDK
- 64-bit portable:
innative-posix-sdk-x64.tar.gz
SHA1 hash:3bfdb623e9a3de01cc9d57864c8f7c11b359cb4e
Linux Runtime
- 64-bit portable:
innative-posix-runtime-x64.tar.gz
SHA1 hash:cdb0621ab64889f08db45cf34ef1445b5780c015
inNative Runtime v0.1.5
This is a major feature release for the inNative Runtime for Windows and Linux, focused on improving debugging support in Visual Studio:
- Full WebAssembly debugging support has been added for Visual Studio using NatVis.
- All internal functions now use C-linkage by default, which bypasses some of the external wrappers. This makes debugging easier and allows tighter integration with the host.
- #48 Fixed step-in behavior on Visual Studio when debugging
- Added ReplaceTableFuncPtr, which is designed to let you bind host C functions to webassembly function pointers, but requires a fairly complex workaround.
innative.h
now properly recognizes webassembly mode- A workaround was implemented to compensate for a serious bug in clang's generation of debug information
- Debugging in general has been refactored out of the compiler to make it easier to manage different formats.
- Memory allocation was completely rewritten to use VirtualAlloc, which allows reserving the entire maximum size available if it is provided, which will prevent the allocation from ever moving.
- AddEmbedding now accepts a
name_override
parameter which allows functions in that embedding to be resolved via(import "name_override" "function_name")
, even if they are not in themodule_WASM_function
naming format. - Debugging format can now be forced to PDB or DWARF on any platform.
Windows
Windows includes an installer for the SDK and runtime package that installs and registers the runtime to run WebAssembly files. However, even if you download the portable zip file version, you can always install it using ./innative-cmd.exe -i
.
Windows SDK
- 64-bit installer:
innative-windows-sdk-x64.msi
- 32-bit installer:
innative-windows-sdk-x86.msi
- 64-bit portable:
innative-windows-sdk-x64.zip
- 32-bit portable:
innative-windows-sdk-x86.zip
Windows Runtime
- 64-bit installer:
innative-windows-runtime-x64.msi
- 32-bit installer:
innative-windows-runtime-x86.msi
- 64-bit portable:
innative-windows-runtime-x64.zip
- 32-bit portable:
innative-windows-runtime-x86.zip
Linux
Linux does not currently have a .dpk
installer, so only portable versions are offered. Linux also only offers 64-bit compiled versions, for the moment. However, you can still install it using sudo ./innative-cmd -i
. There is also a flatpak package available.
Linux SDK
- 64-bit portable:
innative-posix-sdk-x64.tar.gz
SHA1 hash:da1f96feed447c6e3e613d5e16e76f10c4cc75e9
Linux Runtime
- 64-bit portable:
innative-posix-runtime-x64.tar.gz
SHA1 hash:f2fd6f95d4ec39a4e3e60e0bc6c138e80a99a7f3
inNative Runtime v0.1.5-RC1
This is a release candidate build of inNative, only intended to test out new features.
- Full WebAssembly debugging support has been added for Visual Studio using NatVis.
- All internal functions now use C-linkage by default, which bypasses some of the external wrappers. This makes debugging easier and allows tighter integration with the host.
- #48 Fixed step-in behavior on Visual Studio when debugging
- Added ReplaceTableFuncPtr, which is designed to let you bind host C functions to webassembly function pointers, but requires a fairly complex workaround.
innative.h
now properly recognizes webassembly mode- A workaround was implemented to compensate for a serious bug in clang's generation of debug information
- Debugging in general has been refactored out
- Memory allocation was completely rewritten to use VirtualAlloc, which allows reserving the entire maximum size available if it is provided, which will prevent the allocation from ever moving.
Windows
Only zip files have been made available for this release candidate.
Linux
No Linux build is available for this release candidate.
inNative Runtime v0.1.4
This is a major feature release for the inNative Runtime for Windows and Linux, with the following exciting new features:
- Added #28 sourcemap support for generating debug information. inNative now automatically looks for a sourceMapURL section in a webassembly module and will generate debugging information for your original source files instead of the resulting webassembly.
- Added automatic sourcemap generation for C++ debug information. When compiling webassembly with clang, the debug information gets attached as a custom section in the webassembly module. inNative can detect this and automatically generate a sourcemap for your C++ source files, which makes it easy to add proper debugging support.
- Manual editing of in-memory WebAssembly modules was added by #24 exposing schema manipulation functions.
- A metadata function was exposed and used to lift the constant requirement on #29
_innative_funcptr
- Custom symbol exports can now be specified on Environments
- The entire command line was redone to make it more expandable, which will be used to add more features later on. Command line arguments are no longer case sensitive, and the help is automatically generated.
- Lingering intermediate file problems were fixed in the testing harness.
- Breaking changes were made to the ABI in several places that will require some minor refactoring.
Windows
Windows includes an installer for the SDK and runtime package that installs and registers the runtime to run WebAssembly files. However, even if you download the portable zip file version, you can always install it using ./innative-cmd.exe -i
.
Windows SDK
- 64-bit installer:
innative-windows-sdk-x64.msi
- 32-bit installer:
innative-windows-sdk-x86.msi
- 64-bit portable:
innative-windows-sdk-x64.zip
- 32-bit portable:
innative-windows-sdk-x86.zip
Windows Runtime
- 64-bit installer:
innative-windows-runtime-x64.msi
- 32-bit installer:
innative-windows-runtime-x86.msi
- 64-bit portable:
innative-windows-runtime-x64.zip
- 32-bit portable:
innative-windows-runtime-x86.zip
Linux
No precompiled linux binaries are available for this version of the SDK right now, sorry!