Tags: evylang/evy
Tags
🐛 svg: Prevent code with fused instructions (#464) Add a floating point conversion when multiplying when scaling coordinates so that the multiplication does not get fused with an adjacent addition or subtraction. This causes two instructions to be generated, a MUL and a ADD/SUB, instead of a single FMADD or FMSUB. A fused instruction has different rounding so ends up giving slightly different results to two instructions. This was causing different values in the SVGs generated between AMD64 and ARM64. Revert "labs: Rework random rectangle generation" as we no longer need to work around this by rounding in Evy code. Remove the parens in `randrect.evy` as they are not needed any more due to a recent change. I've tested this on AMD64 and ARM64 and the same SVGs are now generated. This merges the following commits: * svg: Prevent code with fused instructions * Revert "labs: Rework random rectangle generation" * labs: Remove unnecessary parens in randrect frontend/lab/samples/ifs/img/randrect.evy | 16 +- frontend/lab/samples/ifs/img/randrect.svg | 420 ++++++++++++++++++---- pkg/cli/svg/runtime.go | 9 +- 3 files changed, 372 insertions(+), 73 deletions(-) Link: https://go.dev/ref/spec#Floating_point_operators Pull-request: #464
🏎️ make: Fix prettier installation race (#463) Targets `docs`, `learn` and `labs` all use prettier which gets installed with npx --prefix $(NODEPREFIX) -y prettier # ... Occasionally this seems to fail on CI when run concurrently. Fix by adding an explicit dependency and prettier installation and a `.WAIT`. Pull-request: #463
🧪 labs: Rework random rectangle generation (#462) Rework random rectangle generation to avoid rounding differences on Mac and Linux. This is not going to the bottom of the problem, just making the build pass again on mac for now. Additionally a vulnerability has been found by govulncheck in the crypto stdlib. An upgrade with `hermit upgrade go` from 1.23.5 to 1.23.6 fixes the build. This merges the following commits: * e2e: Add slight pixel tolerance to no-diagonal test * tools: Upgrade go * labs: Rework random rectangle generation bin/{.go-1.23.5.pkg => .go-1.23.6.pkg} | 0 bin/go | 2 +- bin/gofmt | 2 +- e2e/play/test.js | 2 +- frontend/lab/samples/ifs/img/randrect.evy | 16 +- frontend/lab/samples/ifs/img/randrect.svg | 420 ++++------------------ 6 files changed, 75 insertions(+), 367 deletions(-) Pull-request: #462
☝️ tools: Upgrade (#461) Upgrade hermitised and node tools according to docs. It all went smoothly apart from Playwright which required a bunch of snapshot updates again and is still not working properly with local Node run on Linux :(. This merges the following commits: * tools: Upgrade hermitised tools * node: Upgrade tooling * go: Upgrade dependencies * tools: Upgrade Playwright .hermit/node/package-lock.json | 217 ++++++++++++------ .hermit/node/package.json | 4 +- Makefile | 2 +- ...base-13.29.1.pkg => .firebase-13.29.2.pkg} | 0 bin/{.gh-2.63.2.pkg => .gh-2.65.0.pkg} | 0 bin/{.go-1.23.4.pkg => .go-1.23.5.pkg} | 0 ...t-1.62.2.pkg => .golangci-lint-1.63.4.pkg} | 0 ...leaser-2.5.0.pkg => .goreleaser-2.6.1.pkg} | 0 bin/{.node-22.12.0.pkg => .node-22.13.1.pkg} | 0 ...{.tinygo-0.34.0.pkg => .tinygo-0.35.0.pkg} | 0 bin/corepack | 2 +- bin/firebase | 2 +- bin/gh | 2 +- bin/go | 2 +- bin/gofmt | 2 +- bin/golangci-lint | 2 +- bin/goreleaser | 2 +- bin/node | 2 +- bin/npm | 2 +- bin/npx | 2 +- bin/tinygo | 2 +- .../comment-hover-chromium-docker.png | Bin 93311 -> 95295 bytes .../comment-page-chromium-docker.png | Bin 72187 -> 73169 bytes .../dialog-chromium-docker.png | Bin 57654 -> 60131 bytes .../dialog-theme-chromium-docker.png | Bin 62238 -> 62914 bytes .../expand-0-chromium-docker.png | Bin 93739 -> 95705 bytes .../expand-1-chromium-docker.png | Bin 93320 -> 95238 bytes .../no-dialog-chromium-docker.png | Bin 74311 -> 76511 bytes .../printf-chromium-docker.png | Bin 90835 -> 93313 bytes .../printf-theme-chromium-docker.png | Bin 86813 -> 84794 bytes .../start-chromium-docker.png | Bin 74311 -> 76511 bytes .../start-theme-chromium-docker.png | Bin 71730 -> 69995 bytes e2e/package-lock.json | 26 +-- e2e/package.json | 4 +- .../console-output-chromium-docker.png | Bin 35250 -> 36450 bytes .../modal-chromium-docker.png | Bin 68541 -> 73457 bytes .../no-dialog-chromium-docker.png | Bin 29669 -> 30938 bytes .../no-sidebar-chromium-docker.png | Bin 29493 -> 30938 bytes .../read-input-chromium-docker.png | Bin 25003 -> 25944 bytes .../sidebar-chromium-docker.png | Bin 23082 -> 23673 bytes .../landing-top-chromium-docker.png | Bin 24830 -> 25155 bytes .../playground-chromium-docker.png | Bin 29669 -> 30927 bytes go.mod | 8 +- go.sum | 16 +- learn/go.mod | 10 +- learn/go.sum | 16 +- 46 files changed, 204 insertions(+), 121 deletions(-) docs: https://github.com/evylang/evy/blob/5b196cbe154c60d68b2c2deffa41e118985ffba9/docs/development/upgrade.md Pull-request: #461
✨ parser: Implement for niladic function calls without parens (#460) Implement niladic function calls without parens, so that the following Evy code is now valid: if rand1 > 0.5 print "Heads" end print read print rand1 rand1+10 which reads better than `if (rand1) > 0.5` etc. Along the way fix typo in name of builtin `"rand1"` (name is used in error messages only). Improve error message where a function is called and expected to have a return value. This merges the following commits: * evaluator: Fix builtin name typo * parser: Implement for niladic function calls without parens * parser: Improve error message for none return value pkg/evaluator/builtin.go | 2 +- pkg/parser/ast.go | 4 ++ pkg/parser/expression.go | 22 +++++++--- pkg/parser/expression_test.go | 76 +++++++++++++++++++++++++++++++++++ pkg/parser/parser.go | 8 +++- pkg/parser/parser_test.go | 5 +++ 6 files changed, 109 insertions(+), 8 deletions(-) Pull-request: #460
🚚 all: Rename "runtime" to "platform" (#458) Rename uses of "runtime" where it refers to the CLI runtime and the browser runtime to "platform". Runtime usually refers to the thing doing the running, such as the evaluator or bytecode VM and has started to cause a little confusion or cumbersome language now that the bytecode VM is being developed. Initial talk of perhaps targeting micro-controllers as "platforms" also suggests this should be called platform. There are still a few uses of the word "runtime" left - these refer to things like "runtime errors" where the term still makes sense, as it does not refer to the Evy abstraction for runtime/platform. Fix a lint error in `learn/pkg/learn/markdown.go` since golangci-lint wants to complain about this now. This merges the following commits: * all: Rename "runtime" to "platform" * docsite: Rename "runtime" to "platform" README.md | 2 +- docs/builtins.md | 2 +- docs/spec.md | 13 +++--- frontend/docs/builtins.html | 4 +- frontend/docs/builtins.htmlf | 2 +- frontend/docs/index.html | 2 +- frontend/docs/spec.html | 14 +++--- frontend/docs/spec.htmlf | 12 ++--- frontend/docs/syntax-by-example.html | 2 +- frontend/docs/talks-and-papers.html | 2 +- frontend/docs/usage.html | 2 +- learn/pkg/learn/markdown.go | 2 +- learn/pkg/learn/renderer.go | 2 +- main.go | 6 +-- pkg/cli/runtime.go | 56 +++++++++++------------ pkg/cli/runtime_test.go | 10 ++--- pkg/cli/svg/runtime.go | 56 +++++++++++------------ pkg/cli/svg/runtime_test.go | 38 ++++++++-------- pkg/cli/svg/svg.go | 2 +- pkg/evaluator/builtin.go | 8 ++-- pkg/evaluator/doc.go | 6 +-- pkg/evaluator/evaluator.go | 28 ++++++------ pkg/evaluator/evaluator_test.go | 18 ++++---- pkg/evaluator/runtime.go | 66 ++++++++++++++-------------- pkg/wasm/imports.go | 54 +++++++++++------------ pkg/wasm/main.go | 4 +- 26 files changed, 207 insertions(+), 206 deletions(-) Pull-request: #458
☝️ tools: Upgrade (#459) Upgrade hermitised and node tools according to docs. It all went smoothly apart from Playwright which required a bunch of snapshot updates again and is still not working properly. This merges the following commits: * tools: Upgrade hermitised tools * node: Upgrade tooling * tools: Upgrade Playwright .hermit/node/package-lock.json | 195 ++++++++---------- .hermit/node/package.json | 4 +- Makefile | 2 +- ...base-13.25.0.pkg => .firebase-13.29.1.pkg} | 0 bin/{.gh-2.61.0.pkg => .gh-2.63.2.pkg} | 0 bin/{.go-1.23.3.pkg => .go-1.23.4.pkg} | 0 ...t-1.62.0.pkg => .golangci-lint-1.62.2.pkg} | 0 ...leaser-2.4.4.pkg => .goreleaser-2.5.0.pkg} | 0 bin/{.node-22.11.0.pkg => .node-22.12.0.pkg} | 0 bin/corepack | 2 +- bin/firebase | 2 +- bin/gh | 2 +- bin/go | 2 +- bin/gofmt | 2 +- bin/golangci-lint | 2 +- bin/goreleaser | 2 +- bin/node | 2 +- bin/npm | 2 +- bin/npx | 2 +- .../comment-hover-ios-docker.png | Bin 32347 -> 52152 bytes .../comment-page-ios-docker.png | Bin 22732 -> 33290 bytes .../test.js-snapshots/expand-0-ios-docker.png | Bin 30321 -> 52209 bytes .../test.js-snapshots/expand-1-ios-docker.png | Bin 31574 -> 52173 bytes .../test.js-snapshots/printf-ios-docker.png | Bin 40450 -> 73996 bytes .../test.js-snapshots/sidebar-ios-docker.png | Bin 20539 -> 28964 bytes .../test.js-snapshots/start-ios-docker.png | Bin 49463 -> 78726 bytes e2e/package-lock.json | 26 +-- e2e/package.json | 4 +- .../about-dialog-ios-docker.png | Bin 33572 -> 49331 bytes .../console-output-ios-docker.png | Bin 14475 -> 15293 bytes .../test.js-snapshots/modal-ios-docker.png | Bin 43982 -> 52656 bytes .../no-dialog-chromium-docker.png | Bin 29491 -> 29669 bytes .../no-dialog-ios-docker.png | Bin 21357 -> 27926 bytes .../no-sidebar-ios-docker.png | Bin 21357 -> 27926 bytes .../read-input-chromium-docker.png | Bin 25043 -> 25003 bytes .../read-input-ios-docker.png | Bin 16756 -> 20988 bytes .../test.js-snapshots/sidebar-ios-docker.png | Bin 17099 -> 19429 bytes .../landing-top-ios-docker.png | Bin 14986 -> 15768 bytes .../playground-chromium-docker.png | Bin 29490 -> 29669 bytes .../playground-ios-docker.png | Bin 21357 -> 27926 bytes 40 files changed, 118 insertions(+), 133 deletions(-) docs: https://github.com/evylang/evy/blob/5b196cbe154c60d68b2c2deffa41e118985ffba9/docs/development/upgrade.md Pull-request: #459
🛝 playsite: Add two more samples (#453) Add two more samples, one for graphing mathematical functions one for a frogger style game as described in https://lab.evy.dev#game Keep them in a single commit to avoid updating snapshots twice. In preparatory commit fix link to game solution in labsite. This merges the following commits: * labsite: Fix link to game solution * playsite: Add two more samples .../modal-chromium-docker.png | Bin 64241 -> 68541 bytes .../test.js-snapshots/modal-ios-docker.png | Bin 43835 -> 43982 bytes frontend/lab/samples/games/game.htmlf | 10 +- frontend/lab/samples/games/game.md | 8 +- frontend/play/samples/games/dodger.evy | 83 +++++ frontend/play/samples/interact/graph.evy | 320 ++++++++++++++++++ frontend/play/samples/samples.json | 4 +- 7 files changed, 415 insertions(+), 10 deletions(-) Pull-request: #453
PreviousNext