on master help sign in
Add linux-arm64 build to GitHub Actions CI
eeea40eiko
.github/workflows/build.yml+7−3
@@ -16,6 +16,10 @@ jobs:
16 include:
16 include:
17 - runner: ubuntu-latest
17 - runner: ubuntu-latest
18 name: linux-x86_64
18 name: linux-x86_64
19+ musl-target: x86_64-unknown-linux-musl
20+ - runner: ubuntu-24.04-arm
21+ name: linux-arm64
22+ musl-target: aarch64-unknown-linux-musl
19 - runner: macos-latest
23 - runner: macos-latest
20 name: macos-arm64
24 name: macos-arm64
21 - runner: macos-13
25 - runner: macos-13
@@ -36,7 +40,7 @@ jobs:
36 run: |
40 run: |
37 sudo apt-get update
41 sudo apt-get update
38 sudo apt-get install -y musl-tools
42 sudo apt-get install -y musl-tools
39− rustup target add x86_64-unknown-linux-musl
43+ rustup target add ${{ matrix.musl-target }}
40
44
41 - uses: actions/cache@v4
45 - uses: actions/cache@v4
42 with:
46 with:
@@ -53,7 +57,7 @@ jobs:
53 - name: Build musl runtime
57 - name: Build musl runtime
54 if: runner.os == 'Linux'
58 if: runner.os == 'Linux'
55 working-directory: knot
59 working-directory: knot
56− run: cargo build --release -p knot-runtime --target x86_64-unknown-linux-musl
60+ run: cargo build --release -p knot-runtime --target ${{ matrix.musl-target }}
57
61
58 - name: Compile server (Linux static)
62 - name: Compile server (Linux static)
59 if: runner.os == 'Linux'
63 if: runner.os == 'Linux'
@@ -61,7 +65,7 @@ jobs:
61 printf '#!/bin/sh\nexec musl-gcc -static "$@"\n' > /tmp/static-cc
65 printf '#!/bin/sh\nexec musl-gcc -static "$@"\n' > /tmp/static-cc
62 chmod +x /tmp/static-cc
66 chmod +x /tmp/static-cc
63 CC=/tmp/static-cc \
67 CC=/tmp/static-cc \
64− KNOT_RUNTIME_LIB=${{ github.workspace }}/knot/target/x86_64-unknown-linux-musl/release/libknot_runtime.a \
68+ KNOT_RUNTIME_LIB=${{ github.workspace }}/knot/target/${{ matrix.musl-target }}/release/libknot_runtime.a \
65 ./knot/target/release/knotc build server.knot
69 ./knot/target/release/knotc build server.knot
66
70
67 - name: Compile server (macOS)
71 - name: Compile server (macOS)
client/elm-stuff/0.19.1/Main.elminew file

Binary file not shown.

client/elm-stuff/0.19.1/Main.elmonew file

Binary file not shown.

client/elm-stuff/0.19.1/d.datnew file

Binary file not shown.

client/elm-stuff/0.19.1/i.datnew file

Binary file not shown.

client/elm-stuff/0.19.1/o.datnew file

Binary file not shown.

client/elm.js+120−57
@@ -4743,6 +4743,38 @@ var _Crypto_noble=(()=>{var ie=Object.defineProperty;var Nn=Object.getOwnPropert
4743*/
4743*/
4744/*! Bundled license information:
4744/*! Bundled license information:
4745
4745
4746+@noble/hashes/utils.js:
4747+ (*! noble-hashes - MIT License (c) 2022 Paul Miller (paulmillr.com) *)
4748+
4749+@noble/curves/utils.js:
4750+@noble/curves/abstract/modular.js:
4751+@noble/curves/abstract/curve.js:
4752+@noble/curves/abstract/weierstrass.js:
4753+@noble/curves/secp256k1.js:
4754+@noble/curves/abstract/edwards.js:
4755+@noble/curves/abstract/montgomery.js:
4756+@noble/curves/ed25519.js:
4757+@noble/curves/nist.js:
4758+ (*! noble-curves - MIT License (c) 2022 Paul Miller (paulmillr.com) *)
4759+*/
4760+/*! Bundled license information:
4761+
4762+@noble/hashes/utils.js:
4763+ (*! noble-hashes - MIT License (c) 2022 Paul Miller (paulmillr.com) *)
4764+
4765+@noble/curves/utils.js:
4766+@noble/curves/abstract/modular.js:
4767+@noble/curves/abstract/curve.js:
4768+@noble/curves/abstract/weierstrass.js:
4769+@noble/curves/secp256k1.js:
4770+@noble/curves/abstract/edwards.js:
4771+@noble/curves/abstract/montgomery.js:
4772+@noble/curves/ed25519.js:
4773+@noble/curves/nist.js:
4774+ (*! noble-curves - MIT License (c) 2022 Paul Miller (paulmillr.com) *)
4775+*/
4776+/*! Bundled license information:
4777+
4746@noble/hashes/utils.js:
4778@noble/hashes/utils.js:
4747 (*! noble-hashes - MIT License (c) 2022 Paul Miller (paulmillr.com) *)
4779 (*! noble-hashes - MIT License (c) 2022 Paul Miller (paulmillr.com) *)
4748
4780
@@ -7440,21 +7472,43 @@ var $author$project$Main$charToHexBytes = function (c) {
7440 A2($elm$core$Basics$modBy, 16, b2))
7472 A2($elm$core$Basics$modBy, 16, b2))
7441 ]);
7473 ]);
7442 } else {
7474 } else {
7475+ if (code < 65536) {
7443− var b3 = 128 + A2($elm$core$Basics$modBy, 64, code);
7476+ var b3 = 128 + A2($elm$core$Basics$modBy, 64, code);
7444− var b2 = 128 + A2($elm$core$Basics$modBy, 64, (code / 64) | 0);
7477+ var b2 = 128 + A2($elm$core$Basics$modBy, 64, (code / 64) | 0);
7445− var b1 = 224 + ((code / 4096) | 0);
7478+ var b1 = 224 + ((code / 4096) | 0);
7446− return _List_fromArray(
7479+ return _List_fromArray(
7447− [
7480+ [
7448− $author$project$Main$nibbleToHex((b1 / 16) | 0),
7481+ $author$project$Main$nibbleToHex((b1 / 16) | 0),
7449− $author$project$Main$nibbleToHex(
7482+ $author$project$Main$nibbleToHex(
7450− A2($elm$core$Basics$modBy, 16, b1)),
7483+ A2($elm$core$Basics$modBy, 16, b1)),
7451− $author$project$Main$nibbleToHex((b2 / 16) | 0),
7484+ $author$project$Main$nibbleToHex((b2 / 16) | 0),
7452− $author$project$Main$nibbleToHex(
7485+ $author$project$Main$nibbleToHex(
7453− A2($elm$core$Basics$modBy, 16, b2)),
7486+ A2($elm$core$Basics$modBy, 16, b2)),
7454− $author$project$Main$nibbleToHex((b3 / 16) | 0),
7487+ $author$project$Main$nibbleToHex((b3 / 16) | 0),
7455− $author$project$Main$nibbleToHex(
7488+ $author$project$Main$nibbleToHex(
7456− A2($elm$core$Basics$modBy, 16, b3))
7489+ A2($elm$core$Basics$modBy, 16, b3))
7490+ ]);
7491+ } else {
7492+ var b4 = 128 + A2($elm$core$Basics$modBy, 64, code);
7493+ var b3 = 128 + A2($elm$core$Basics$modBy, 64, (code / 64) | 0);
7494+ var b2 = 128 + A2($elm$core$Basics$modBy, 64, (code / 4096) | 0);
7495+ var b1 = 240 + ((code / 262144) | 0);
7496+ return _List_fromArray(
7497+ [
7498+ $author$project$Main$nibbleToHex((b1 / 16) | 0),
7499+ $author$project$Main$nibbleToHex(
7500+ A2($elm$core$Basics$modBy, 16, b1)),
7501+ $author$project$Main$nibbleToHex((b2 / 16) | 0),
7502+ $author$project$Main$nibbleToHex(
7503+ A2($elm$core$Basics$modBy, 16, b2)),
7504+ $author$project$Main$nibbleToHex((b3 / 16) | 0),
7505+ $author$project$Main$nibbleToHex(
7506+ A2($elm$core$Basics$modBy, 16, b3)),
7507+ $author$project$Main$nibbleToHex((b4 / 16) | 0),
7508+ $author$project$Main$nibbleToHex(
7509+ A2($elm$core$Basics$modBy, 16, b4))
7457− ]);
7510+ ]);
7511+ }
7458 }
7512 }
7459 }
7513 }
7460};
7514};
@@ -7917,68 +7971,77 @@ var $author$project$Main$messagePayloadDecoder = A5(
7917 A2($elm$json$Json$Decode$field, 'body', $elm$json$Json$Decode$string));
7971 A2($elm$json$Json$Decode$field, 'body', $elm$json$Json$Decode$string));
7918var $author$project$Main$processEvents = F4(
7972var $author$project$Main$processEvents = F4(
7919 function (xPriv, myEdHex, events, seenIds) {
7973 function (xPriv, myEdHex, events, seenIds) {
7920− return A3(
7974+ return function (_v5) {
7975+ var msgs = _v5.a;
7976+ var seen = _v5.b;
7977+ var acks = _v5.c;
7978+ return _Utils_Tuple3(
7979+ $elm$core$List$reverse(msgs),
7980+ seen,
7981+ acks);
7982+ }(
7983+ A3(
7921− $elm$core$List$foldl,
7984+ $elm$core$List$foldl,
7922− F2(
7985+ F2(
7923− function (event, _v0) {
7986+ function (event, _v0) {
7924− var msgs = _v0.a;
7987+ var msgs = _v0.a;
7925− var seen = _v0.b;
7988+ var seen = _v0.b;
7926− var acks = _v0.c;
7989+ var acks = _v0.c;
7927− if (event.eventType !== 'message') {
7990+ if (event.eventType !== 'message') {
7928− return _Utils_Tuple3(msgs, seen, acks);
7929− } else {
7930− var _v1 = A2($elm$json$Json$Decode$decodeString, $author$project$Main$envelopeDecoder, event.payload);
7931− if (_v1.$ === 'Err') {
7932− return _Utils_Tuple3(
7991+ return _Utils_Tuple3(msgs, seen, acks);
7933− msgs,
7934− seen,
7935− A2($elm$core$List$cons, event.id, acks));
7936 } else {
7992 } else {
7937− var envelope = _v1.a;
7993+ var _v1 = A2($elm$json$Json$Decode$decodeString, $author$project$Main$envelopeDecoder, event.payload);
7938− if (_Utils_eq(envelope.fromKey, myEdHex)) {
7994+ if (_v1.$ === 'Err') {
7939 return _Utils_Tuple3(
7995 return _Utils_Tuple3(
7940 msgs,
7996 msgs,
7941 seen,
7997 seen,
7942 A2($elm$core$List$cons, event.id, acks));
7998 A2($elm$core$List$cons, event.id, acks));
7943 } else {
7999 } else {
7944− var _v2 = A2($author$project$Main$decryptMessage, xPriv, envelope.encryptedBlob);
8000+ var envelope = _v1.a;
7945− if (_v2.$ === 'Nothing') {
8001+ if (_Utils_eq(envelope.fromKey, myEdHex)) {
7946 return _Utils_Tuple3(
8002 return _Utils_Tuple3(
7947 msgs,
8003 msgs,
7948 seen,
8004 seen,
7949 A2($elm$core$List$cons, event.id, acks));
8005 A2($elm$core$List$cons, event.id, acks));
7950 } else {
8006 } else {
7951− var _v3 = _v2.a;
8007+ var _v2 = A2($author$project$Main$decryptMessage, xPriv, envelope.encryptedBlob);
7952− var senderPub = _v3.a;
8008+ if (_v2.$ === 'Nothing') {
7953− var json = _v3.b;
7954− var _v4 = A2($elm$json$Json$Decode$decodeString, $author$project$Main$messagePayloadDecoder, json);
7955− if (_v4.$ === 'Err') {
7956 return _Utils_Tuple3(
8009 return _Utils_Tuple3(
7957 msgs,
8010 msgs,
7958 seen,
8011 seen,
7959 A2($elm$core$List$cons, event.id, acks));
8012 A2($elm$core$List$cons, event.id, acks));
7960 } else {
8013 } else {
8014+ var _v3 = _v2.a;
8015+ var senderPub = _v3.a;
8016+ var json = _v3.b;
8017+ var _v4 = A2($elm$json$Json$Decode$decodeString, $author$project$Main$messagePayloadDecoder, json);
8018+ if (_v4.$ === 'Err') {
8019+ return _Utils_Tuple3(
8020+ msgs,
8021+ seen,
8022+ A2($elm$core$List$cons, event.id, acks));
8023+ } else {
7961− var payload = _v4.a;
8024+ var payload = _v4.a;
7962− return A2($elm$core$Set$member, payload.id, seen) ? _Utils_Tuple3(
8025+ return A2($elm$core$Set$member, payload.id, seen) ? _Utils_Tuple3(
7963− msgs,
8026+ msgs,
7964− seen,
8027+ seen,
7965− A2($elm$core$List$cons, event.id, acks)) : _Utils_Tuple3(
8028+ A2($elm$core$List$cons, event.id, acks)) : _Utils_Tuple3(
7966− A2(
8029+ A2(
7967− $elm$core$List$cons,
8030+ $elm$core$List$cons,
7968− _Utils_Tuple2(
8031+ _Utils_Tuple2(
7969− senderPub,
8032+ senderPub,
7970− {body: payload.body, id: payload.id, outgoing: false, timestamp: payload.timestamp}),
8033+ {body: payload.body, id: payload.id, outgoing: false, timestamp: payload.timestamp}),
7971− msgs),
8034+ msgs),
7972− A2($elm$core$Set$insert, payload.id, seen),
8035+ A2($elm$core$Set$insert, payload.id, seen),
7973− A2($elm$core$List$cons, event.id, acks));
8036+ A2($elm$core$List$cons, event.id, acks));
8037+ }
7974 }
8038 }
7975 }
8039 }
7976 }
8040 }
7977 }
8041 }
7978− }
7979− }),
8042+ }),
7980− _Utils_Tuple3(_List_Nil, seenIds, _List_Nil),
8043+ _Utils_Tuple3(_List_Nil, seenIds, _List_Nil),
7981− events);
8044+ events));
7982 });
8045 });
7983var $author$project$Main$GotChallenge = function (a) {
8046var $author$project$Main$GotChallenge = function (a) {
7984 return {$: 'GotChallenge', a: a};
8047 return {$: 'GotChallenge', a: a};