Skip to content

@ErikMcClure ErikMcClure released this Jan 18, 2021

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

Windows Runtime

Assets 10

@ErikMcClure ErikMcClure released this Aug 28, 2020

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

Windows Runtime

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

Linux Runtime

Assets 12

@ErikMcClure ErikMcClure released this Jul 8, 2020

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

Windows Runtime

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

Linux Runtime

Assets 12
Pre-release

@ErikMcClure ErikMcClure released this Jun 16, 2020

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.

Assets 6

@ErikMcClure ErikMcClure released this Apr 27, 2020

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

Windows Runtime

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

Linux Runtime

Assets 12

@ErikMcClure ErikMcClure released this Mar 15, 2020

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

Windows Runtime

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

Linux Runtime

Assets 12

@ErikMcClure ErikMcClure released this Feb 25, 2020

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 the module_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

Windows Runtime

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

Linux Runtime

Assets 12
Pre-release

@ErikMcClure ErikMcClure released this Feb 18, 2020

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.

Assets 6

@ErikMcClure ErikMcClure released this Nov 30, 2019

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

Windows Runtime

Linux

No precompiled linux binaries are available for this version of the SDK right now, sorry!

Assets 10

@ErikMcClure ErikMcClure released this Nov 13, 2019

This is a minor feature release for the inNative Runtime for Windows and Linux, with the following changes:

  • Upgraded to LLVM 9 and refactored project structure around the GitHub monorepo, which provides prebuilt binaries
  • Fixed several bugs in LLD and now allow building LLD seperately from LLVM, so an existing LLVM installation may be used.
  • Fixed #8 32-bit windows linker problems
  • Fixed #11 dynamically linked tests on windows, which allows shipping the drastically smaller dynamically linked * test executable.
  • Fixed #32 and #21 whitelist errors, and added comprehensive tests of the whitelist feature.
    Addressed confusion surrounding multiple embeddings and added tests to ensure the feature works as intended.
  • Attempt to use LD_LIBRARY_PATH on POSIX systems if all else fails.
  • The project now requires C++14 and <filesystem> support. In some cases, newer compilers can be confused by the makefiles, which attempt to use the experimental filesystem implementation, instead of the standard one. This can be fixed by removing -lstdc++fs and changing to -std=c++17.
  • .clang-format was added, and Travis CI builds were added (but all currently fail due to compiler issues). These issues will be addressed by replace makefile with CMake in the future.

For each platform and architecture, two separate downloads are available: the SDK, and the runtime package. If you want to embed inNative into your program, you want to download the SDK. If you just want to compile native WebAssembly modules, you can get the smaller runtime package. If you don't know what to get, download the SDK.

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

Windows Runtime

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

Linux SDK

Linux Runtime

Assets 12