<#100 Feat/ruby3 2 2 plus arm64> Pull request open...
# pact-ruby-standalone
g
#100 Feat/ruby3 2 2 plus arm64 Pull request opened by YOU54F Ruby 3.2.2 + ARM64 Support 🚀 💎 • Updates to traveling ruby build system on my fork PR here phusion/traveling-ruby#133 Related Issues • closes #70 Features • Ruby 3.2.2 • ARM64/aarch64 support for macos/linux • x86 support for windows • x-plat testing with GitHub actions for X86_64 & Cirrus-CI for ARM Supported Platforms - Current State 🚧 are supported under emulation. Supported Platforms - Proposed Ruby does not have native support for Windows on ARM. Breaking changes ⚠️ Naming conventions change for all binaries New Filename Format
Copy code
pact-3.1.2.2-alpha-linux-arm64.tar.gz
pact-3.1.2.2-alpha-linux-arm64.tar.gz.checksum
pact-3.1.2.2-alpha-linux-x86_64.tar.gz
pact-3.1.2.2-alpha-linux-x86_64.tar.gz.checksum
pact-3.1.2.2-alpha-osx-arm64.tar.gz
pact-3.1.2.2-alpha-osx-arm64.tar.gz.checksum
pact-3.1.2.2-alpha-osx-x86_64.tar.gz
pact-3.1.2.2-alpha-osx-x86_64.tar.gz.checksum
pact-3.1.2.2-alpha-windows-x86.zip
pact-3.1.2.2-alpha-windows-x86.zip.checksum
pact-3.1.2.2-alpha-windows-x86_64.zip
pact-3.1.2.2-alpha-windows-x86_64.zip.checksum
Old Filename Format
Copy code
pact-1.91.0-linux-x86_64.tar.gz
pact-1.91.0-linux-x86_64.tar.gz.checksum
pact-1.91.0-osx.tar.gz
pact-1.91.0-osx.tar.gz.checksum
pact-1.91.0-win32.zip
pact-1.91.0-win32.zip.checksum
New Filesizes 😱 binaries are alot bigger Old Filesizes Windows Long path limit still applies 260 characters, caused an issue on windows verification
Copy code
C:\Users\saf\dev\pact-matchers\pact-js-ruby\node_modules\@you54f\pact-node\standalone\windows-x64-3.1.2.2-alpha\pact\lib\vendor\ruby\3.2.0\gems\pact-provider-verifier-1.36.1\lib\pact\provider_verifier\provider_states\remove_provider_states_header_middleware.rb
Enable Long Paths See https://github.com/pact-foundation/pact-js-core/blob/master/README.md#windows-issues Windows has a default path length limit of 260 causing issues with projects that are nested deep inside several directory and with how npm handles node_modules directory structures. To fix this issue, please enable Windows Long Paths in the registry by running regedit.exe, find the key
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\FileSystem\LongPathsEnabled
and change the value from
0
to
1
, then reboot your computer. Pact should now work as it should. Windows On Arm Tested via Parallels Run with no output (echo $EXITCODE)
Copy code
> ./helloworld.exe
-1073741515
The application exited with the error code -1073741515, more famously known as 0xC0000135, which is Windows' way of telling us that an essential component is missing. It turns out that we need to install the Microsoft Visual C++ Redistributable for Visual Studio 2019 for ARM64. Installing the MSVC redistributable and rerunning our app now produces the expected output.
Copy code
> ./helloworld.exe
Hello World
unexpected ucrtbase.dll
32bit ruby using ucrt has started to fail on newer Windows with "unexpected ucrtbase.dll" -> https://github.com/ruby/ruby/blob/3fb7d2cadc18472ec107b14234933b017a33c14d/win32/win32.c#L2591 The problem is that ruby depends on ucrt internals and those have apparently changed with newer versions. See https://github.com/msys2/MINGW-packages/pull/10878 and https://github.com/msys2/MINGW-packages/issues/10896 for some background and a potential fix. But ideally ruby wouldn't depend on Windows internals like this.
25250 is now working for me on Windows on Arm Dev Kit 2023 device - thanks!
You can find it here 2023-03 Cumulative Update Preview for Windows 11 Version 22H2 for arm64-based Systems (KB5023778) https://blogs.windows.com/windows-insider/2023/04/07/announcing-windows-11-insider-preview-build-23430/ • slow to start up with emulation - using x86_64 or x86 Alignment with FFI naming conventions We should take into account pact ffi's naming conventions, at this time, to help keep things neat at a critical juncture https://github.com/pact-foundation/pact-reference/releases/tag/libpact_ffi-v0.4.4

Screenshot 2023-04-27 at 00 15 23

pact-foundation/pact-ruby-standalone All checks have passed 7/7 successful checks