wip jit runtime...
currently hangs on run.native with no output :-\
I can take a look at this tomorrow. One thing I want to do is make this align more closely with the Homebrew cask to ease future maintenance. That means making the native runtime (and fzf) optional. The optionality should be trivial, but (again, to match Homebrew) the native runtime should default to disabled.
So, Iβd like to see this PR have that flag, rather than merge it with it enabled and have a breaking change to change that.
I can make the change for the flag on top of this PR, this is just a note to hopefully prevent merging until I do.
Oh, and I wanted to comment that @ereslibre made a PR to upgrade the nixpkgs derivation similarly. The current PR there clearly doesnβt enable the native runtime at all, so I donβt mind it getting in as-is. But,
- yay that someone beat us to the punch with upgrading that derivation (thanks, @ereslibre!);
- I hope to get that derivation and the one in this repo pretty close to bit-for-bit identical sometime this week; and
- hopefully retire this repo (by moving everything except this derivation to unisonweb/unison) not long after.
π @sellout! regarding:
The current PR there clearly doesnβt enable the native runtime at all
I am wrapping the ucm wrapper with β-runtime-path. Is there anything else missing in order to enable the native runtime?
Thanks!
@ereslibre Seems fine to me. Does the native runtime work for you though? e.g. if you create a
foo = do printLine "foo"
and then
myproject/main> run.native foo
? I'm guessing there's some missing dependencies but since there's no output I'm not sure what it would be.
Does the native runtime work for you though?
@aryairani: no, doesn't seem to be working here. I'd have to check, but I won't have the time to dig into that very soon.
sometest/main>
Loading changes detected in ~/test.u.
I found and typechecked these definitions in ~/test.u. If you do an `add` or `update`, here's how
your codebase would change:
β These new definitions are ok to `add`:
foo : '{IO, Exception} ()
sometest/main> add
β I've added these definitions:
foo : '{IO, Exception} ()
sometest/main> run.native foo
I got an error when starting the Unison native runtime using:
/nix/store/a4rjks7sf0l1ijdcy3vawzgi5f3si4pk-unison-code-manager-0.5.20/runtime/bin/unison-runtime --help
The exit code was 1 and the output was:
ffi-obj: could not find export from foreign library
name: EVP_Digest
library: [all opened]
system error: /nix/store/a4rjks7sf0l1ijdcy3vawzgi5f3si4pk-unison-code-manager-0.5.20/runtime/bin/unison-runtime: undefined symbol: EVP_Digest
context...:
.../ffi/unsafe.rkt:255:20
.../ffi/unsafe.rkt:249:2: get-ffi-obj*
body of '#%embedded:unison/crypto:
Ah, I think both derivations are missing a minimal-racket dependency at least βΒ thatβs what made me think that @ereslibreβs wasnβt supporting native runtime.
Also, EVP_Digest is openssl, so something along those lines might also be missing.
ffi-obj: could not find export from foreign library name: EVP_Digest library: [all opened] system error: /nix/store/a4rjks7sf0l1ijdcy3vawzgi5f3si4pk-unison-code-manager-0.5.20/runtime/bin/unison-runtime: undefined symbol: EVP_Digest context...: .../ffi/unsafe.rkt:255:20 .../ffi/unsafe.rkt:249:2: get-ffi-obj* body of '#%embedded:unison/crypto:
Nevermind β that error leads me to believe itβs finding Racket. I guess I should actually try out these derivations before I talk more β¦
With this PR, on aarch64-darwin, I see the no output behavior. But on x86_64-linux, I see @ereslibreβs behavior. Donβt know why Apple wants to keep us in the dark β¦
So, at least it seems like both PRs are behaving the same.
Ah, I think both derivations are missing a
minimal-racketdependency at least βΒ thatβs what made me think that @ereslibreβs wasnβt supporting native runtime.
You need minimal-racket if you're trying to set up compile.native; otherwise you don't need it.
With this PR, on
aarch64-darwin, I see the no output behavior. But on x86_64-linux, I see @ereslibreβs behavior. Donβt know why Apple wants to keep us in the dark β¦So, at least it seems like both PRs are behaving the same.
On macOS, Racket has bundled some libs for us into the runtime/lib directory; on Linux, Racket doesn't. You'll need to have libssl (1.1?) libcrypto (1.1?), and libb2 available, and then I imagine you'll get the same hang as on macOS, but who knows.
Just updated https://github.com/NixOS/nixpkgs/pull/312922. It seems to work fine now on x86_64-linux. Since racket uses get-lib-search-dirs we can rely on LD_LIBRARY_PATH, so I made the wrapper append these paths and it works as expected now. Not sure if there might be other edge cases that I'm missing though.
sometest/main> run.native foo
foo
()
Nice, thanks @ereslibre!
If you want to do a more comprehensive test, you can:
.> clone @unison/runtime-tests
...
@unison/runtime-tests/main> run.native tests
But I suspect that based on what you have shown so far, it will work.
Let me know if you want some help trying to get compile.native working, but I think it could also wait for a later release.
Hello @aryairani,
It failed, but not sure why exactly, open-input-file seems to have failed. Do I need to run this command from a specific folder or something similar?
native tests
@unison/runtime-tests/main> run.native tests
*** Test suite ***
β
sin 0
β
sin pi/2
β
cos 0
β
cos pi
β
cosh pi
β
sinh pi/2
β
addf
β
asin 1.0
β
asinh 1.0
β
atan 1.0
β
atan2 1.0 2.0
β
atanh 0.5
β
tan 0.5
β
tanh 0.5
β
ceiling 0.1
β
ceiling 0.9
β
floor 0.9
β
floor 1.9
β
rndf
β
divf
β
maxf
β
minf
β
mulf
β
muli
β
powi
β
pown
β
powf
β
ntof
β
negi
β
divi
β
eqlf
β
eqlf
β
leqi
β
leqn
β
subi
β
signum
β
signum
β
signum
β
logf
β
logb
β
decn
β
deci
β
inci
β
incn
β
expf
β
TZRO +0
β
TZRO +1
β
TZRO +16777216
β
TZRO 2^59
β
POPC +16777215
β
POPC +5
β
POPC -5
β
POPC -1
β
POPC -1234567891
β
POPC -1111111111
*** Test suite ***
β
Get file size should work
β
File size of missing file
β
File timestamp is reasonable
β
File timestamp of missing file
β
AbsoluteSeek
β
RelativeSeek
β
RelativeSeek
β
getLine 1
β
getLine 2
β
getLine 3
β
Block
β
Line
β
No
β
echo turned off
β
echo turned back on
β
cli args
β
HOME env variable
β
get 10 random bytes
β
get some bytes
β
get char
β
get a complicated char
β
Current directory starts with /
β
Tmp directory exists and contains prefix-
β
renameFile
β
opened handle is open
β
closed handle is not open
β
handle with text ready is ready
β
!now
β
!Clock.monotonic
β
!processCPUTime
β
!threadCPUTime
β
isSeekable file
β
handlePosition initial
β
handlePosition
β
renameFile
β
Current directory set & get
Summary of results:
β
β
β
36 PASSED
β
decoding a cert should work
β
decoding a private key should work
β
decoding an invalid private key should ignore
β
decoding an invalid cert should fail
β
self signed should connect & receive what we sent
β
self signed chain server received
β
self signed with the wrong hostname should fail
β
self signed with an unknown CA should fail
β
self signed wrong host
β
wrong host example.com fails
β
Md5 hashBytes
β
Sha1 hashBytes
β
Sha2_256 hashBytes
β
Sha2_512 hashBytes
β
Sha3_256 hashBytes
β
Sha3_512 hashBytes
β
Blake2s_256 hashBytes
β
Blake2b_256 hashBytes
β
Blake2b_512 hashBytes
β
murmurHash 0
β
murmurHash 1
β
murmurHash 2
β
murmurHash 3
β
murmurHash 4
β
murmurHash 5
β
murmurHash 6
β
murmurHash 7
β
murmurHash 8
β
murmurHash 9
β
Sha1 hmacBytes
β
Sha2_256 hmacBytes
β
Sha2_512 hmacBytes
β
Sha3_256 hmacBytes
β
Sha3_512 hmacBytes
β
Blake2s_256 hmacBytes
β
Blake2b_256 hmacBytes
β
Blake2b_512 hmacBytes
β
Ref read-write
β
Ref read-write
β
Ticket contains the Ref value
β
CAS is successful is there were no conflicting writes
β
CAS fails when there was an intervening write
β
Promise should be empty when created
β
Promise should read a value that's been written
β
Promise can only be written to once
β
Once the Promise is full, tryRead is the same as read
β
Reads awaits for completion of the Promise
β
Thread was killed
β
Thread killed, finalisers with typeLink
β
tryEval is a no-op on success
β
Thread was killed, with finalisers
β
The state of the counter is consistent
β
rejects invalid port
β
no send after close
β
no send on listener
β
Server received data
β
Client received data
open-input-file: cannot open input file
path: /home/ereslibre/unison-src/transcripts-using-base/serialized-cases/case-04.v4.ser
system error: No such file or directory; errno=2
context...:
.../unison/io-handles.rkt:208:0: unison-FOp-IO.openFile.impl.v3
.../unison/simple-wrappers.ss:1919:0
.../unison/boot.ss:209:41
[repeats 3 more times]
.../racket/control.rkt:138:30
.../unison/boot.ss:209:41
.../racket/control.rkt:138:30
.../unison/boot.ss:209:41
.../racket/control.rkt:138:30
.../unison/boot.ss:209:41
[repeats 2 more times]
.../racket/control.rkt:138:30
.../racket/unison-runtime.rkt:186:2
body of '#%mzc:unison-runtime
native evaluation failed
Just for sanity, run tests (without native) fails in a similar way:
tests
@unison/runtime-tests/main> run tests
*** Test suite ***
β
sin 0
β
sin pi/2
β
cos 0
β
cos pi
β
cosh pi
β
sinh pi/2
β
addf
β
asin 1.0
β
asinh 1.0
β
atan 1.0
β
atan2 1.0 2.0
β
atanh 0.5
β
tan 0.5
β
tanh 0.5
β
ceiling 0.1
β
ceiling 0.9
β
floor 0.9
β
floor 1.9
β
rndf
β
divf
β
maxf
β
minf
β
mulf
β
muli
β
powi
β
pown
β
powf
β
ntof
β
negi
β
divi
β
eqlf
β
eqlf
β
leqi
β
leqn
β
subi
β
signum
β
signum
β
signum
β
logf
β
logb
β
decn
β
deci
β
inci
β
incn
β
expf
β
TZRO +0
β
TZRO +1
β
TZRO +16777216
β
TZRO 2^59
β
POPC +16777215
β
POPC +5
β
POPC -5
β
POPC -1
β
POPC -1234567891
β
POPC -1111111111
*** Test suite ***
β
Get file size should work
β
File size of missing file
β
File timestamp is reasonable
β
File timestamp of missing file
β
AbsoluteSeek
β
RelativeSeek
β
RelativeSeek
β
getLine 1
β
getLine 2
β
getLine 3
β
Block
β
Line
β
No
β
echo turned off
β
echo turned back on
β
cli args
β
HOME env variable
β
get 10 random bytes
β
get some bytes
β
get char
β
get a complicated char
β
Current directory starts with /
β
Tmp directory exists and contains prefix-
β
renameFile
β
opened handle is open
β
closed handle is not open
β
handle with text ready is ready
β
!now
β
!Clock.monotonic
β
!processCPUTime
β
!threadCPUTime
β
isSeekable file
β
handlePosition initial
β
handlePosition
β
renameFile
β
Current directory set & get
Summary of results:
β
β
β
36 PASSED
β
decoding a cert should work
β
decoding a private key should work
β
decoding an invalid private key should ignore
β
decoding an invalid cert should fail
β
self signed should connect & receive what we sent
β
self signed chain server received
β
self signed with the wrong hostname should fail
β
self signed with an unknown CA should fail
β
self signed wrong host
β
wrong host example.com fails
β
Md5 hashBytes
β
Sha1 hashBytes
β
Sha2_256 hashBytes
β
Sha2_512 hashBytes
β
Sha3_256 hashBytes
β
Sha3_512 hashBytes
β
Blake2s_256 hashBytes
β
Blake2b_256 hashBytes
β
Blake2b_512 hashBytes
β
murmurHash 0
β
murmurHash 1
β
murmurHash 2
β
murmurHash 3
β
murmurHash 4
β
murmurHash 5
β
murmurHash 6
β
murmurHash 7
β
murmurHash 8
β
murmurHash 9
β
Sha1 hmacBytes
β
Sha2_256 hmacBytes
β
Sha2_512 hmacBytes
β
Sha3_256 hmacBytes
β
Sha3_512 hmacBytes
β
Blake2s_256 hmacBytes
β
Blake2b_256 hmacBytes
β
Blake2b_512 hmacBytes
β
Ref read-write
β
Ref read-write
β
Ticket contains the Ref value
β
CAS is successful is there were no conflicting writes
β
CAS fails when there was an intervening write
β
Promise should be empty when created
β
Promise should read a value that's been written
β
Promise can only be written to once
β
Once the Promise is full, tryRead is the same as read
β
Reads awaits for completion of the Promise
β
Thread was killed
β
Thread killed, finalisers with typeLink
β
tryEval is a no-op on success
β
Thread was killed, with finalisers
β
The state of the counter is consistent
β
rejects invalid port
β
no send after close
β
no send on listener
β
Server received data
β
Client received data
π₯ test failure: case-00 unison-src/transcripts-using-base/serialized-cases/case-00.v4.ser: openFile: does not exist (No such file or directory)
π₯ test failure: case-04 unison-src/transcripts-using-base/serialized-cases/case-04.v4.ser: openFile: does not exist (No such file or directory)
π₯ test failure: case-02 unison-src/transcripts-using-base/serialized-cases/case-02.v4.ser: openFile: does not exist (No such file or directory)
β
bug is caught
β
List empty literal
β
List literal
β
List equality: empty
β
List equality: non empty
β
List inequality: non empty (1)
β
List inequality: non empty (2)
β
List inequality: non empty (3)
β
List inequality: empty
β
List equality: composite
β
List inequality: composite
β
List ordering (1)
β
List ordering (2)
β
List ordering (3)
β
List ordering (4)
β
List ordering (5)
β
List.ordering (6)
β
List.cons
β
List.snoc
β
List.++
β
List.take (1)
β
List.take (2)
β
List.take (3)
β
List.take (4)
β
List.take (5)
β
List.drop (1)
β
List.drop (2)
β
List.drop (3)
β
List.drop (4)
β
List.drop (5)
β
List.size (1)
β
List.size (2)
β
List.at (1)
β
List.at (2)
β
List.at (3)
β
List.at (4)
β
length matching: literal (1)
β
length matching: literal (2)
β
length matching: literal (3)
β
length matching: literal (4)
β
length: cons matching
β
length: snoc matching
β
length: ++ prefix matching
β
length: ++ suffix matching
β
cons matching: empty
β
cons matching: non empty
β
two cons matching (1)
β
two cons matching (2)
β
two cons matching (3)
β
two snoc matching (1)
β
two snoc matching (2)
β
two snoc matching (3)
β
middle matching (1)
β
middle matching (2)
β
middle matching (3)
β
middle matching with non-empty list (1)
β
middle matching with non-empty list (2)
β
middle matching with non-empty list (3)
β
Complex matching
β
Text empty literal
β
Text literal
β
Text equality: empty
β
Text equality: non empty
β
Text inequality: empty (1)
β
Text inequality: empty (2)
β
Text inequality: non empty
β
Universal equality with Text: empty
β
Universal equality with Text: non empty
β
Universal inequality with Text: empty (1)
β
Universal inequality with Text: empty (2)
β
Universal inequality with Text: non empty
β
Universal equality with Text: composite
β
Universal inequality with Text: composite
β
Text ordering (1)
β
Text ordering (2)
β
Text ordering (3)
β
Text ordering (4)
β
Text ordering (5)
β
Universal ordering with Text (1)
β
Universal ordering with Text (2)
β
Universal ordering with Text (3)
β
Universal ordering with Text (4)
β
Universal ordering with Text (5)
β
Universal ordering with Text (6)
β
Text.++
β
Text.take (1)
β
Text.take (2)
β
Text.take (3)
β
Text.take (4)
β
Text.take (5)
β
Text.drop (1)
β
Text.drop (2)
β
Text.drop (3)
β
Text.drop (4)
β
Text.drop (5)
β
Text.size (1)
β
Text.size (2)
β
Text.uncons (1)
β
Text.uncons (2)
β
Text.uncons (3)
β
Text.unsnoc (1)
β
Text.unsnoc (2)
β
Text.unsnoc (3)
β
Text.repeat (1)
β
Text.repeat (2)
β
Text.repeat (3)
β
Text.repeat (3)
β
Text.reverse (1)
β
Text.reverse (2)
β
Text.reverse (3)
β
Text.toUppercase (1)
β
Text.toUppercase (2)
β
Text.toLowercase (1)
β
Text.toLowercase (2)
β
Text.indexOf (1)
β
Text.indexOf (2)
β
Text.indexOf (3)
β
Text.indexOf (3)
β
Nat.toText (1)
β
Nat.toText (2)
β
Nat.toText (3)
β
Nat.fromText (1)
β
Nat.fromText (2)
β
Nat.fromText (3)
β
Nat.fromText (4)
β
Nat.fromText (5)
β
Nat.fromText (6)
β
Nat <-> Text roundtrip (1)
β
Int.toText (1)
β
Int.toText (2)
β
Int.toText (3)
β
Int.fromText (1)
β
Int.fromText (2)
β
Int.fromText (3)
β
Int.fromText (3)
β
Int.fromText (4)
β
Int.fromText (5)
β
Int.fromText (6)
β
Int <-> Text roundtrip (1)
β
Int <-> Text roundtrip (2)
β
Float.toText
β
Float.fromText (1)
β
Float.fromText (2)
β
Char.toText
β
Text.toCharList: empty
β
Text.toCharList non empty
β
Text.fromCharList: empty
β
Text.fromCharList: non empty
β
Text ut8 roundTrip
β
Debug.evalToText (1)
β
Debug.evalToText (2)
β
bug (1)
β
bug (2)
β
todo (1)
β
todo (2)
trace: First message
3
trace: Second message
"hello"
β
Debug.trace
Watch
β
Debug.watch
β
String literal matching: empty
β
String literal matching: non empty
β
String literal matching: default
β
Pattern api (1)
β
Pattern api (2)
β
Pattern api (3)
β
Pattern api (4)
β
Pattern api (5)
β
Pattern api (6)
β
Pattern api (7)
β
Pattern api (8)
β
Pattern api (9)
β
Pattern api (10)
β
Pattern api (11)
β
Pattern api (12)
β
Pattern api (13)
β
Pattern api (14)
β
Pattern api (15)
β
Pattern api (16)
β
Pattern api (17)
β
Pattern api (18)
β
Pattern api (19)
β
Pattern api (20)
β
Pattern api (21)
β
Pattern api (22)
β
Pattern api (23)
β
Pattern api (24)
β
Pattern api (25)
β
Char.Class: any
β
Char.Class: any (2)
β
Char.Class.alphanumeric (1)
β
Char.Class.alphanumeric (2)
β
Char.Class.upper
β
Char.Class.lower
β
Char.Class.number
β
Char.Class.punctuation
β
Char.Class.symbol
β
Char.Class.letter
β
Char.Class.whitespace
β
Char.Class.control
β
Char.Class.printable
β
Char.Class.mark
β
Char.Class.separator
β
Char.Class.not
β
Char.Class.and
β
Char.Class.or (1)
β
Char.Class.or (2)
β
Char.Class.range (1)
β
Char.Class.range (2)
β
Char.Class.range (3)
β
Char.Class.range (4)
β
Char.Class.anyOf (1)
β
Char.Class.anyOf (2)
β
Char.Class.anyOf (3)
β
Bytes empty literal
β
Bytes literal
β
Debug.evalToText on Bytes
β
Bytes.fromList: empty
β
Bytes.fromList: non empty
β
Bytes.fromList: invalid
β
Bytes.toList: empty
β
Bytes.toList: non empty
β
fromUtf8: invalid
β
fromUtf8
β
toUtf8
β
ut8 roundTrip
β
Bytes equality: empty
β
Bytes equality: non empty
β
Bytes inequality: non empty (1)
β
Bytes inequality: non empty (2)
β
Bytes inequality: non empty (3)
β
Bytes inequality: empty
β
Bytes equality: composite
β
Bytes inequality: composite
β
Bytes ordering (1)
β
Bytes ordering (2)
β
Bytes ordering (3)
β
Bytes ordering (4)
β
Bytes ordering (5)
β
Bytes ordering (6)
β
Bytes.flatten
β
Bytes.++
β
Bytes.take (1)
β
Bytes.take (2)
β
Bytes.take (3)
β
Bytes.take (4)
β
Bytes.take (5)
β
Bytes.drop (1)
β
Bytes.drop (2)
β
Bytes.drop (3)
β
Bytes.drop (4)
β
Bytes.drop (5)
β
Bytes.size (1)
β
Bytes.size (2)
β
Bytes.at (1)
β
Bytes.at (2)
β
Bytes.at (3)
β
Bytes.at (4)
β
Bytes.indexOf (1)
β
Bytes.indexOf (2)
β
Bytes.indexOf (3)
β
Bytes.indexOf (3)
β
gzip empty
β
gzip hello folks
β
gunzip empty
β
gunzip hello folks
β
zlib empty
β
zlib hello folks
β
zlib inflate empty
β
zlib inflate hello folks
β
base16 empty
β
from base16 empty
β
base16 hello
β
from base16 hello
β
base32 hello
β
from base32 hello
β
base64 hello
β
from base64 hello
β
base64Url hello
β
from base64Url hello
β
from base16 fail non-utf8
β
from base32 fail non-utf8
β
from base64 fail non-utf8
β
from base64Url fail non-utf8
β
from base32 fail
β
decodeNat16be 1
β
decodeNat16be 10000
β
decodeNat16le 1
β
decodeNat16le 10000
β
decodeNat32be 1
β
decodeNat32be 1000000000
β
decodeNat32le 1
β
decodeNat32le 1000000000
β
decodeNat64be 1
β
decodeNat64be 10000000000000000
β
decodeNat64le 1
β
decodeNat64le 10000000000000000
β
encodeNat16be 1
β
encodeNat16be 10000
β
encodeNat16le 1
β
encodeNat16le 10000
β
encodeNat32be 1
β
encodeNat32be 1000000000
β
encodeNat32le 1
β
encodeNat32le 1000000000
β
encodeNat64be 1
β
encodeNat64be 10000000000000000
β
encodeNat64le 1
β
encodeNat64le 10000000000000000
β
byte new/msize
β
byte mut read/write 64
β
byte mut read/write 40
β
byte mut read/write 32
β
byte mut read/write 24
β
byte mut read/write 16
β
byte mut read/write 8
β
byte new/size
β
byte imm read/write 64
β
byte imm read/write 40
β
byte imm read/write 32
β
byte imm read/write 24
β
byte imm read/write 16
β
byte imm read/write 8
β
byte immutable copyTo!
β
byte mutable copyTo!
β
byte immutable copied
β
boxed array/msize
β
boxed mut read/write
β
boxed new/size
β
boxed imm read/write
β
immuntable copyTo!
β
mutable copyTo!
β
boxed immutable copied
β
boxed serial
β
codelookup #016888slblvodphfclvfslsfg427dv1tv1me53eui24pilfeq9fa8
β
codelookup #00b3jbldq2t4plgsi6u1k23q8g7dfahfc7ggblqikvndbfijv456g
β
codelookup #01oi4j2iudlufo4iarngn292821ljgbaa7ssjbufmtukifuem6rse
β
codelookup #0197gdh70lgq40btoggomju2kvi6r466qqfdu1c628sefdrrfusga
β
codelookup #028m89oqrpm9raicunscdegrappcq9ekkgbknqa0r8uktr1ilk51o
β
codelookup #02jgonqg0sob7d8r9l75biie2q6sl3eb5ktnf99c8er0de26oq4u6
β
codelookup #0104n87srnts5ku4bd4g7sv32nru0c4cmh1ucqejt52nit0p792tq
β
codelookup #03t4555ovfl57rcn9e69mk8sad9cqvgc9dglrddonlthdbk60agcg
β
codelookup #00s4qgnlemcvuj7h18rnq3r84k1t8n5847a9n4hqupjq2s6v7nk9c
β
codelookup #01l1c0nf1hqg4acrg9ba984j92o4tcoqjpe8hmc4vprdo9lntp07e
β
codelookup #001gd5dk78n7vqrlltbi9nqpn6rapb99tf8u6o1vhqf4uf3kcuq92
β
codelookup #03npa9qar85ck28f5rsl577dctfiuuhur24gsevshc6h7i5ui32g2
β
codelookup #00n4dgeec6jt6skfmkh04d8k56d312emvhtoa41neia8drnf8m1ha
β
codelookup #00so2r5a8hjo5cippkmjkdfsckghl0876393dd70hn8rcvtgjasvi
β
codelookup #020oqghpt8t21t1m1fn0m7c369i08uv60s042d8ptgo4bqau2tmm4
β
codelookup #034m4ap7bg1rmm46cistvq2objtj3m7raoo6nekk8fu1jv9hr0f5u
β
codelookup #01dmj6kci0av8b4h1bo15vbu3n2oahvs2q7tbs5tc5f8drk6ar98i
β
codelookup #029imb8lah6pt8s2uv4o4s76ok654qeogt4fdc9upo9hm49r6jon2
β
codelookup #02j756k2gbdlomnc1s2k2nutt9con1cae9lgemmrp3jabf79mait4
β
codelookup #031djf8uaq003dfrps44sulchccgg6eegb0r1iuiq3nahgf7vanm0
β
codelookup #001v77fenc2q4prm6nds1dmrckmuf280jrg6e7ndchr6tt3g2o1rq
β
codelookup #03880kcvadlrci39lhn2gtn9vo93raan2sm6onlmjjed9mq8855hm
β
5 safe
β
5.0 safe
β
"" safe
β
0xs1337 safe
β
List.map safe
β
FilePath.open unsafe
β
sandbox.open1 unsafe
β
sandbox.open2 unsafe
β
Code.cache_ unsafe
β
FilePath.open allowed
β
Code.cache_ allowed
ππ₯
The program halted with an unhandled exception:
Failure
(typeLink IOFailure)
"unison-src/transcripts-using-base/serialized-cases/case-04.v4.ser: openFile: does not exist (No such file or directory)"
(Any ())
Stack trace:
##raise
Also, tested https://github.com/NixOS/nixpkgs/pull/312922 and it works fine on Darwin aarch64:
.> run.native foo
foo
()
Note: it takes a while to show up, but it does eventually. In the order of 1 second or so.
And for the sake of completeness, Darwin on x86_64 working as well with https://github.com/NixOS/nixpkgs/pull/312922:
vibrant-wallaroo/main> run foo
foo
()
vibrant-wallaroo/main> run.native foo
foo
()
Hello @aryairani,
It failed, but not sure why exactly,
open-input-fileseems to have failed. Do I need to run this command from a specific folder or something similar?native tests Just for sanity,
run tests(without native) fails in a similar way:tests
@ereslibre Oops, sorry about that βΒ that's a known issue I forgot about, which trips me up sometimes too. If you run the tests from the root directory of the unisonweb/unison repo, that file will be available.
I'm thinking that ideally the only files the tests should be reading should be ones that it also wrote, but that's a separate issue for a separate ticket for a separate repo. π
@ereslibre Oops, sorry about that β that's a known issue I forgot about, which trips me up sometimes too. If you run the tests from the root directory of the unisonweb/unison repo, that file will be available.
I see, thanks for confirming. I will check later tonight just to confirm, but I think it's already looking good.
I'm thinking that ideally the only files the tests should be reading should be ones that it also wrote, but that's a separate issue for a separate ticket for a separate repo. π
Hehe, absolutely :)
Yup, tests pass with run.native tests after cloning clone @unison/runtime-tests, and when executed from within the unison directory.
@unison/runtime-tests/main> run.native tests
<snip>
Summary of results:
β
β
β
499 PASSED
()