1
1
mirror of https://github.com/anoma/juvix.git synced 2024-12-03 09:41:10 +03:00
Juvix empowers developers to write code in a high-level, functional language, compile it to gas-efficient output VM instructions, and formally verify the safety of their contracts prior to deployment and execution.
Go to file
Paul Cadman 59f9b49a77
Capture scry id in the main function and use it when compiling anomaGet (#2705)
The purpose of this PR is to wrap the compiled main function with Nockma
code that captures the argument tuple for use when compiling `anomaGet`
calls.


* The [Anoma system
expects](c7f2d69d1e/lib/anoma/node/executor/worker.ex (L20))
to receive a function of type `ScryId -> Transaction`
 
* The ScryId is only used to construct the argument to the Scry
operation (i.e the anomaGet builtin in the Juvix frontend),
 
* When the Juvix developer writes a function to submit to Anoma they use
type `() -> Transaction`, the main function wrapper is used to capture
the ScryId argument into the subject which is then used to construct
OpScry arguments when anomaGet is compiled.
 
* If the Anoma system expectation changes then the wrapper code must be
changed.

We could add a transformation that checks that the main function in the
Anoma target has no arguments. However it is convenient to be able to
write functions with arguments for testing and debugging (for example
compiling directly to a logic function).

---------

Co-authored-by: Jan Mas Rovira <janmasrovira@gmail.com>
2024-04-02 16:40:07 +01:00
.devcontainer upgrade to Ghc 9.8.1 (#2624) 2024-02-07 09:47:48 +00:00
.github Cache cairo-vm-cli in the CI build (#2707) 2024-03-28 18:32:36 +00:00
app CASM serialization (#2679) 2024-03-26 17:18:52 +01:00
assets Fix typos (#2573) 2024-01-08 13:27:18 +01:00
bench Release v0.6.0 (#2676) 2024-03-01 09:14:32 +00:00
bench2 Replace polysemy by effectful (#2663) 2024-03-21 12:09:34 +00:00
examples Add field element type (#2659) 2024-02-27 14:54:43 +01:00
gnuplot Automatized benchmarks (#1673) 2023-01-05 17:48:26 +01:00
include Add field element type (#2659) 2024-02-27 14:54:43 +01:00
juvix-stdlib@e2efe4e6fe Update juvix-stdlib submodule reference to main (#2675) 2024-02-29 17:32:55 +00:00
licenses Remove unused files (#2398) 2023-09-28 14:20:19 +02:00
runtime Move the Nockma standard library to a separate file (#2701) 2024-03-27 13:07:52 +01:00
scripts CASM serialization (#2679) 2024-03-26 17:18:52 +01:00
src/Juvix Capture scry id in the main function and use it when compiling anomaGet (#2705) 2024-04-02 16:40:07 +01:00
test Capture scry id in the main function and use it when compiling anomaGet (#2705) 2024-04-02 16:40:07 +01:00
tests Fix memory access order in the JuvixReg to CASM translation. (#2697) 2024-03-27 10:40:24 +01:00
.clang-format Juvix C runtime (#1580) 2022-11-03 09:38:09 +01:00
.github_changelog_generator Update Changelog v0.2.3 🎉 2022-08-15 12:24:42 +02:00
.gitignore Add support for Literate Juvix Markdown (#2448) 2023-11-10 13:55:36 +01:00
.gitmodules Rename MiniJuvix to Juvix (#259) 2022-07-08 13:59:45 +02:00
.hlint.yaml Add default arguments (#2408) 2023-10-10 23:28:06 +02:00
.pre-commit-config.yaml Update clang formatting (#2465) 2023-10-23 19:12:56 +02:00
cabal.hie.yaml Automatized benchmarks (#1673) 2023-01-05 17:48:26 +01:00
cabal.project upgrade to Ghc 9.8.1 (#2624) 2024-02-07 09:47:48 +00:00
cabal.project.freeze upgrade to Ghc 9.8.1 (#2624) 2024-02-07 09:47:48 +00:00
CHANGELOG.md Release 0.6.1 (#2699) 2024-03-25 11:45:18 +00:00
cntlines.sh JuvixReg to CASM translation (#2671) 2024-03-20 12:14:12 +01:00
CONTRIBUTING.md Fix baseUrl for juvix docs in Doctor command (#2122) 2023-05-24 12:14:30 +02:00
justfile Add -XBangPatterns to the justfile (#2627) 2024-02-08 08:31:11 +00:00
LICENSE.md Add new README and md files (#1904) 2023-03-21 20:01:48 +01:00
Makefile Remove BangPattern pragmas (#2626) 2024-02-07 11:46:13 +00:00
package.yaml Move the Nockma standard library to a separate file (#2701) 2024-03-27 13:07:52 +01:00
README.md Fix tara url svg (#2406) 2023-09-28 19:05:05 +02:00
stack.hie.yaml Refactor hie.yaml and add entry in the readme (#1672) 2022-12-20 16:45:48 +01:00
stack.yaml Replace polysemy by effectful (#2663) 2024-03-21 12:09:34 +00:00

Juvix

Tara the Juvix mascot

CI Status

The Juvix compiler CI

Nightly build, release and benchmark

Codebase
Open the Juvix Standard Lib in Github Codespace

This repository is specifically dedicated to the compiler of the Juvix programming language.

For any Juvix-related inquiries, we strongly advise visiting the following resources.

Our documentation offers an in-depth understanding of the Juvix programming language. It encompasses a language reference, examples, blog posts, and numerous other resources to facilitate effective use of Juvix.