Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Before releasing 0.14 #771

Open
4 of 7 tasks
udoprog opened this issue Jul 23, 2024 · 0 comments
Open
4 of 7 tasks

Before releasing 0.14 #771

udoprog opened this issue Jul 23, 2024 · 0 comments
Labels
chore Chores that has to happen for certain tasks

Comments

@udoprog
Copy link
Collaborator

udoprog commented Jul 23, 2024

The following are items which are planned to be done for the 0.14 release:

Change execution model

Every any value should be reference counted to allow for more complex compile-time optimizations to be valid, such as pattern optimizations below.

This can eventually be opted-out of through Gradual typing.

Support traits

Direct arguments and -O function-body=true

This allows scripts of rune to be run directly without having to wrap the entrypoint in an fn main() { <body> }.

Implement basic pattern optimizations

  • First implementation.

If the compiler can prove that an irrefutable pattern like this is used:

let (b, a) = (a, b);

This will not generate any instructions, instead the assigned slots for the names a and b will simply be swapped.

Note that because of the new memory model in git, this will be supported through arbitrarily complex patterns.

let a = 42;
let b = 84;
let object = #{ a, b };
let (a, #{ a: b, b: c }) = (10, object);

This could essentially be translated to:

let a = 10;
let b = 42;
let c = 84;
let object = #{ a: b, b: c };

Other

@udoprog udoprog added the chore Chores that has to happen for certain tasks label Jul 23, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
chore Chores that has to happen for certain tasks
Projects
None yet
Development

No branches or pull requests

1 participant