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

Execution and Node modularization #392

Merged
merged 1 commit into from
May 25, 2020
Merged

Execution and Node modularization #392

merged 1 commit into from
May 25, 2020

Conversation

Razican
Copy link
Member

@Razican Razican commented May 11, 2020

The idea behind this work is to divide the exec and ast::node modules in smaller code pieces. I also want to solve #376 in the process, and maybe #377.

This is the progress as of now:

  • Node::ArrayDecl
  • Node::ArrowFunctionDecl
  • Node::Assign
  • Node::BinOp
  • Node::Block
  • Node::Break
  • Node::Call
  • Node::ConditionalOp
  • Node::Const
  • Node::ConstDecl => Node::ConstDeclList
  • Node::Continue
  • Node::DoWhileLoop
  • Node::FunctionDecl
  • Node::FunctionExpr
  • Node::GetConstField
  • Node::GetField
  • Node::ForLoop
  • Node::If
  • Node::LetDecl => Node::LetDeclList
  • Node::Local => Node::Identifier
  • Node::New
  • Node::Object
  • Node::Return
  • Node::Switch
  • Node::Spread
  • Node::StatementList (no longer a node)
  • Node::Throw
  • Node::Try
  • Node::This (no change)
  • Node::UnaryOp
  • Node::VarDecl => Node::VarDeclList
  • Node::WhileLoop

I also added the Executable trait, and I'm modifying the Executor trait in order for external libraries to provide their own executors. We could also just remove the Executor trait if we don't want to offer this option.

@Razican Razican added the enhancement New feature or request label May 11, 2020
@github-actions
Copy link

Benchmark for a84b7d1

Click to view benchmark
Test PR Benchmark Master Benchmark %
Create Realm 418.2±10.07µs 417.4±9.69µs 100%
Expression (Lexer) 2.0±0.09µs 2.0±0.06µs 100%
Expression (Parser) 5.2±0.17µs 5.2±0.09µs 101%
Fibonacci (Execution) 2.9±0.08ms 3.0±0.07ms 99%
For loop (Execution) 443.6±12.80µs 440.0±10.26µs 101%
For loop (Lexer) 5.3±0.20µs 5.4±0.21µs 99%
For loop (Parser) 14.7±0.53µs 14.8±0.75µs 99%
Hello World (Lexer) 932.0±16.92ns 937.6±22.56ns 99%
Hello World (Parser) 2.3±0.06µs 2.4±0.12µs 96%
Symbols (Execution) 448.9±20.10µs 444.2±14.72µs 101%
undefined undefined 100%

@github-actions
Copy link

Benchmark for 3567431

Click to view benchmark
Test PR Benchmark Master Benchmark %
Create Realm 411.2±6.65µs 415.2±8.82µs 99%
Expression (Lexer) 1995.3±27.46ns 2.1±0.05µs 97%
Expression (Parser) 5.1±0.08µs 5.1±0.06µs 101%
Fibonacci (Execution) 2.9±0.13ms 2.9±0.03ms 100%
For loop (Execution) 433.1±7.26µs 432.4±4.32µs 100%
For loop (Lexer) 5.2±0.06µs 5.3±0.07µs 98%
For loop (Parser) 14.2±0.18µs 14.5±0.31µs 98%
Hello World (Lexer) 933.4±26.69ns 933.5±15.05ns 100%
Hello World (Parser) 2.3±0.02µs 2.3±0.03µs 101%
Symbols (Execution) 440.9±8.64µs 436.5±5.05µs 101%
undefined undefined 100%

@github-actions
Copy link

Benchmark for ab63b70

Click to view benchmark
Test PR Benchmark Master Benchmark %
Create Realm 426.6±8.40µs 432.8±20.42µs 99%
Expression (Lexer) 2.1±0.06µs 2.1±0.04µs 102%
Expression (Parser) 5.3±0.25µs 5.2±0.16µs 101%
Fibonacci (Execution) 3.2±0.08ms 3.3±0.07ms 99%
For loop (Execution) 478.6±17.93µs 460.4±37.19µs 104%
For loop (Lexer) 5.6±0.21µs 5.7±0.21µs 99%
For loop (Parser) 15.6±0.43µs 15.3±0.34µs 102%
Hello World (Lexer) 1020.3±38.35ns 991.3±26.54ns 103%
Hello World (Parser) 2.5±0.07µs 2.5±0.05µs 100%
Symbols (Execution) 475.8±12.17µs 469.9±14.16µs 101%
undefined undefined 100%

@github-actions
Copy link

Benchmark for f3a168d

Click to view benchmark
Test PR Benchmark Master Benchmark %
Create Realm 377.3±15.26µs 375.8±15.28µs 100%
Expression (Lexer) 1799.3±57.79ns 1843.4±47.23ns 98%
Expression (Parser) 4.6±0.10µs 4.6±0.12µs 99%
Fibonacci (Execution) 2.7±0.08ms 2.6±0.07ms 101%
For loop (Execution) 399.8±13.88µs 394.0±15.77µs 101%
For loop (Lexer) 4.8±0.15µs 4.8±0.16µs 99%
For loop (Parser) 13.0±0.29µs 13.2±0.34µs 99%
Hello World (Lexer) 858.1±27.22ns 862.4±20.30ns 100%
Hello World (Parser) 2.1±0.08µs 2.1±0.06µs 100%
Symbols (Execution) 407.1±13.87µs 408.3±18.49µs 100%
undefined undefined 100%

@github-actions
Copy link

Benchmark for 8849ae3

Click to view benchmark
Test PR Benchmark Master Benchmark %
Create Realm 397.5±9.41µs 397.0±7.70µs 100%
Expression (Lexer) 1891.4±50.48ns 1924.5±109.63ns 98%
Expression (Parser) 4.9±0.11µs 4.9±0.07µs 99%
Fibonacci (Execution) 2.8±0.05ms 2.8±0.03ms 99%
For loop (Execution) 416.7±6.64µs 417.7±12.83µs 100%
For loop (Lexer) 5.2±0.09µs 5.0±0.13µs 104%
For loop (Parser) 13.8±0.22µs 13.9±0.14µs 99%
Hello World (Lexer) 907.7±17.77ns 888.7±13.25ns 102%
Hello World (Parser) 2.2±0.10µs 2.3±0.05µs 99%
Symbols (Execution) 442.1±45.35µs 428.0±11.12µs 103%
undefined undefined 100%

@github-actions
Copy link

Benchmark for 91b0b79

Click to view benchmark
Test PR Benchmark Master Benchmark %
Create Realm 403.5±20.34µs 422.2±17.62µs 95%
Expression (Lexer) 1962.9±95.66ns 2.0±0.09µs 98%
Expression (Parser) 4.7±0.25µs 5.0±0.22µs 94%
Fibonacci (Execution) 3.1±0.10ms 3.1±0.09ms 98%
For loop (Execution) 433.1±18.33µs 457.0±21.22µs 94%
For loop (Lexer) 5.2±0.26µs 5.0±0.23µs 105%
For loop (Parser) 15.4±0.85µs 14.7±1.82µs 105%
Hello World (Lexer) 921.6±52.22ns 916.9±48.20ns 101%
Hello World (Parser) 2.3±0.14µs 2.3±0.10µs 102%
Symbols (Execution) 432.3±17.25µs 460.6±19.64µs 93%
undefined undefined 100%

@Razican Razican force-pushed the exec_modularization branch 2 times, most recently from dd00036 to d638746 Compare May 11, 2020 20:25
@github-actions
Copy link

Benchmark for 5083e07

Click to view benchmark
Test PR Benchmark Master Benchmark %
Create Realm 416.7±15.84µs 401.0±13.04µs 104%
Expression (Lexer) 1926.6±80.65ns 1985.1±100.35ns 97%
Expression (Parser) 6.2±0.18µs 5.1±0.23µs 121%
Fibonacci (Execution) 2.9±0.11ms 2.8±0.20ms 104%
For loop (Execution) 449.0±18.67µs 425.0±17.85µs 106%
For loop (Lexer) 5.1±0.17µs 5.2±0.25µs 99%
For loop (Parser) 16.8±0.65µs 14.3±0.60µs 117%
Hello World (Lexer) 923.0±42.76ns 905.8±33.65ns 102%
Hello World (Parser) 2.7±0.11µs 2.3±0.07µs 118%
Symbols (Execution) 441.3±18.33µs 432.3±14.90µs 102%
undefined undefined 100%

@github-actions
Copy link

Benchmark for ec9295e

Click to view benchmark
Test PR Benchmark Master Benchmark %
Create Realm 434.9±11.86µs 419.6±13.04µs 104%
Expression (Lexer) 2.1±0.06µs 2.1±0.09µs 98%
Expression (Parser) 6.2±0.25µs 5.2±0.19µs 119%
Fibonacci (Execution) 3.2±0.09ms 3.1±0.08ms 105%
For loop (Execution) 470.2±13.12µs 444.8±14.35µs 106%
For loop (Lexer) 5.4±0.21µs 5.4±0.24µs 100%
For loop (Parser) 17.6±0.55µs 15.1±0.58µs 117%
Hello World (Lexer) 986.5±58.30ns 996.9±36.77ns 99%
Hello World (Parser) 2.9±0.09µs 2.4±0.11µs 117%
Symbols (Execution) 466.6±16.00µs 447.3±13.44µs 104%
undefined undefined 100%

@github-actions
Copy link

Benchmark for fdcdf09

Click to view benchmark
Test PR Benchmark Master Benchmark %
Create Realm 411.0±12.49µs 398.9±8.62µs 103%
Expression (Lexer) 1946.6±50.74ns 1942.6±77.15ns 100%
Expression (Parser) 5.1±0.21µs 4.9±0.49µs 102%
Fibonacci (Execution) 2.8±0.05ms 2.8±0.08ms 98%
For loop (Execution) 424.4±9.58µs 434.2±26.63µs 98%
For loop (Lexer) 5.1±0.07µs 5.1±0.13µs 101%
For loop (Parser) 13.7±0.50µs 13.9±0.36µs 98%
Hello World (Lexer) 932.5±33.96ns 895.4±24.45ns 104%
Hello World (Parser) 2.3±0.22µs 2.3±0.08µs 99%
Symbols (Execution) 435.2±22.94µs 420.8±9.46µs 103%
undefined undefined 100%

@github-actions
Copy link

Benchmark for 954ad85

Click to view benchmark
Test PR Benchmark Master Benchmark %
Create Realm 365.4±36.21µs 390.9±37.86µs 93%
Expression (Lexer) 1778.2±136.68ns 1759.5±124.30ns 101%
Expression (Parser) 5.5±0.41µs 5.0±0.31µs 111.00000000000001%
Fibonacci (Execution) 2.7±0.18ms 2.9±0.18ms 90.99999999999999%
For loop (Execution) 376.9±30.90µs 403.4±40.90µs 93%
For loop (Lexer) 4.9±0.40µs 5.0±0.59µs 96%
For loop (Parser) 14.6±1.24µs 14.0±1.62µs 104%
Hello World (Lexer) 883.0±106.85ns 882.7±77.94ns 100%
Hello World (Parser) 2.5±0.25µs 2.1±0.16µs 115.99999999999999%
Symbols (Execution) 375.6±29.88µs 400.0±42.68µs 93%
undefined undefined 100%

@Razican
Copy link
Member Author

Razican commented May 13, 2020

A small update on the changes I made:
I removed the StatementList node for now, and simplified some nodes to have less indirections.

This has added a bit of extra complexity in the parser, which brings the times up a bit, but they are clearly minor compared to the huge gains in execution. This should improve further as I continue modularizing more nodes.

I also removed the Executor trait for now. I don't think it makes sense for other crates to create their own Boa interpreters. It was almost impossible to use it before that way anyways. This has simplified the execution and reduces compile times.

I also added a preliminary version of hoisting, but it's not 100% spec compliant yet.

@Razican Razican added this to the v0.9.0 milestone May 14, 2020
@Razican Razican marked this pull request as ready for review May 15, 2020 13:03
@Razican Razican marked this pull request as draft May 15, 2020 13:04
@Razican Razican force-pushed the exec_modularization branch from ccf0820 to e600c4c Compare May 15, 2020 13:22
@Razican
Copy link
Member Author

Razican commented May 15, 2020

Some more changes:

  • Tokens now have a Span instead of a Position. This should make it easier to implement Span nodes #300, or even better diagnostics of errors if we get into that.
  • Positions and spans are now properly checked on creation: no more positions with 0 as the column or line number, no more spans that end before they start. This brought up many errors with token positions that should now be fixed.
  • Positions use now NonZeroU32 for column and line numbers instead of u32. This means that a whole position now occupies only 64 bits, instead of 128, and enter in a word in most recent processors. It also brings some optimisations if we use Option<Position>. This should make a Token a bit smaller, and thus easier to pass around, and should give some performance optimisations.
  • Constants no longer have a String if they are of type String, they will have a Box<str>, this gives us some space optimisation in both heap an stack. String interning #279 should help with this too, by making all tokens Copy.
  • The helper structure used to lex numbers is now smaller and Copy, which should improve performance in this area.
  • Hoisting is now 100% spec compliant (!), at least with the tests I did.
  • Node::Local is now Node::Identifier. I thought this name made more sense, and it's the name V8 uses.
  • All non-mutable String-s have been replaced by Box<str> in Node. This will reduce the size of a Node.

Still many things to do, but this modularization is already showing big performance improvements. In the future, I would like to modify the Assign node and others to allow only for 3 types of nodes in the left hand side. This would avoid one boxing and therefore improve performance.

@github-actions
Copy link

Benchmark for b8899e2

Click to view benchmark
Test PR Benchmark Master Benchmark %
Create Realm 393.9±15.86µs 391.5±15.84µs 101%
Expression (Lexer) 2.1±0.08µs 1919.6±93.58ns 111.00000000000001%
Expression (Parser) 5.0±0.25µs 4.8±0.22µs 105%
Fibonacci (Execution) 2.9±0.09ms 2.9±0.10ms 99%
For loop (Execution) 424.1±14.17µs 425.1±24.42µs 100%
For loop (Lexer) 5.5±0.23µs 5.1±0.25µs 109.00000000000001%
For loop (Parser) 15.1±0.81µs 14.2±0.62µs 106%
Hello World (Lexer) 1037.7±42.89ns 981.4±99.83ns 106%
Hello World (Parser) 2.3±0.08µs 2.3±0.09µs 101%
Symbols (Execution) 439.3±23.73µs 423.9±17.66µs 104%
undefined undefined 100%

@github-actions
Copy link

Benchmark for 9db5584

Click to view benchmark
Test PR Benchmark Master Benchmark %
Create Realm 401.3±25.71µs 406.0±31.53µs 99%
Expression (Lexer) 2.2±0.07µs 1837.8±75.95ns 118%
Expression (Parser) 4.7±0.34µs 4.9±0.37µs 96%
Fibonacci (Execution) 2.7±0.16ms 3.0±0.17ms 93%
For loop (Execution) 387.1±35.34µs 392.4±35.50µs 99%
For loop (Lexer) 5.3±0.40µs 4.4±0.48µs 120%
For loop (Parser) 15.0±1.91µs 14.6±0.59µs 103%
Hello World (Lexer) 1103.2±119.89ns 930.6±53.33ns 119%
Hello World (Parser) 2.4±0.08µs 2.2±0.30µs 111.00000000000001%
Symbols (Execution) 425.4±21.04µs 452.5±41.53µs 94%
undefined undefined 100%

@github-actions
Copy link

Benchmark for 157482b

Click to view benchmark
Test PR Benchmark Master Benchmark %
Create Realm 397.2±9.35µs 403.3±20.39µs 98%
Expression (Lexer) 2.1±0.03µs 1934.5±50.61ns 107%
Expression (Parser) 5.2±0.08µs 5.0±0.07µs 105%
Fibonacci (Execution) 2.8±0.04ms 2.8±0.05ms 99%
For loop (Execution) 419.0±13.38µs 425.2±7.31µs 99%
For loop (Lexer) 5.5±0.11µs 5.2±0.36µs 105%
For loop (Parser) 13.9±0.32µs 14.0±0.46µs 100%
Hello World (Lexer) 1012.0±22.43ns 968.2±16.09ns 105%
Hello World (Parser) 2.3±0.04µs 2.3±0.03µs 99%
Symbols (Execution) 421.3±8.64µs 428.7±7.60µs 98%
undefined undefined 100%

@github-actions
Copy link

Benchmark for c4bc22b

Click to view benchmark
Test PR Benchmark Master Benchmark %
Create Realm 413.7±11.98µs 430.8±6.79µs 96%
Expression (Lexer) 2.3±0.12µs 2.2±0.12µs 108%
Expression (Parser) 5.5±0.15µs 5.3±0.18µs 104%
Fibonacci (Execution) 3.1±0.07ms 3.2±0.05ms 99%
For loop (Execution) 447.0±13.53µs 459.5±15.37µs 97%
For loop (Lexer) 5.9±0.22µs 5.4±0.17µs 109.00000000000001%
For loop (Parser) 15.5±0.48µs 15.1±0.41µs 103%
Hello World (Lexer) 1121.6±42.92ns 1074.3±61.42ns 104%
Hello World (Parser) 2.5±0.10µs 2.5±0.07µs 102%
Symbols (Execution) 444.0±14.39µs 484.0±18.09µs 90.99999999999999%
undefined undefined 100%

@github-actions
Copy link

Benchmark for 36278f7

Click to view benchmark
Test PR Benchmark Master Benchmark %
Create Realm 401.0±14.86µs 408.4±9.87µs 98%
Expression (Lexer) 2.2±0.05µs 1978.7±41.25ns 109.00000000000001%
Expression (Parser) 5.0±0.05µs 4.9±0.13µs 100%
Fibonacci (Execution) 3.0±0.06ms 3.1±0.07ms 97%
For loop (Execution) 426.3±11.71µs 432.3±13.05µs 99%
For loop (Lexer) 5.4±0.14µs 5.3±0.20µs 104%
For loop (Parser) 14.5±1.09µs 14.8±0.44µs 98%
Hello World (Lexer) 1038.5±18.04ns 998.9±28.46ns 104%
Hello World (Parser) 2.3±0.12µs 2.4±0.10µs 95%
Symbols (Execution) 434.6±34.98µs 445.8±23.53µs 97%
undefined undefined 100%

@Razican Razican linked an issue May 17, 2020 that may be closed by this pull request
@Razican Razican mentioned this pull request May 18, 2020
@Razican Razican force-pushed the exec_modularization branch from eb6e6b5 to 462bf9a Compare May 21, 2020 18:07
@github-actions
Copy link

Benchmark for c1897e3

Click to view benchmark
Test PR Benchmark Master Benchmark %
Create Realm 396.0±13.98µs 397.8±15.82µs 100%
Expression (Lexer) 2.1±0.11µs 1963.2±114.34ns 105%
Expression (Parser) 5.1±0.14µs 5.1±0.19µs 100%
Fibonacci (Execution) 2.6±0.12ms 2.6±0.17ms 99%
For loop (Execution) 416.8±17.62µs 432.5±22.10µs 96%
For loop (Lexer) 5.5±0.14µs 5.3±0.20µs 105%
For loop (Parser) 13.9±0.36µs 14.8±1.07µs 93%
Hello World (Lexer) 991.2±43.00ns 948.7±21.98ns 104%
Hello World (Parser) 2.3±0.15µs 2.4±0.04µs 97%
Symbols (Execution) 424.7±8.54µs 417.8±18.45µs 102%
undefined undefined 100%

@github-actions
Copy link

Benchmark for df82a0f

Click to view benchmark
Test PR Benchmark Master Benchmark %
Create Realm 430.1±24.35µs 412.1±14.45µs 104%
Expression (Lexer) 2.3±0.13µs 2.1±0.12µs 108%
Expression (Parser) 5.5±0.25µs 5.2±0.30µs 105%
Fibonacci (Execution) 2.9±0.16ms 3.0±0.10ms 98%
For loop (Execution) 442.1±21.03µs 457.9±20.62µs 96%
For loop (Lexer) 5.7±0.24µs 5.4±0.28µs 105%
For loop (Parser) 15.0±1.03µs 15.2±0.76µs 99%
Hello World (Lexer) 1067.8±56.03ns 1053.7±61.45ns 101%
Hello World (Parser) 2.4±0.13µs 2.5±0.13µs 97%
Symbols (Execution) 449.2±25.60µs 451.6±18.35µs 99%
undefined undefined 100%

@github-actions
Copy link

Benchmark for 9c87c48

Click to view benchmark
Test PR Benchmark Master Benchmark %
Create Realm 422.2±20.46µs 426.0±10.89µs 99%
Expression (Lexer) 2.3±0.07µs 2.1±0.13µs 108%
Expression (Parser) 5.3±0.15µs 5.2±0.16µs 101%
Fibonacci (Execution) 2.9±0.09ms 2.9±0.09ms 100%
For loop (Execution) 447.2±12.64µs 452.0±17.06µs 99%
For loop (Lexer) 5.8±0.24µs 5.7±0.21µs 102%
For loop (Parser) 14.7±0.35µs 15.5±0.58µs 94%
Hello World (Lexer) 1073.8±34.84ns 1065.1±20.53ns 101%
Hello World (Parser) 2.4±0.07µs 2.5±0.08µs 95%
Symbols (Execution) 443.8±13.32µs 450.8±11.99µs 98%
undefined undefined 100%

@Razican Razican force-pushed the exec_modularization branch from 005f9b1 to 673483e Compare May 23, 2020 17:43
@github-actions
Copy link

Benchmark for fff8e38

Click to view benchmark
Test PR Benchmark Master Benchmark %
Create Realm 339.6±15.62µs 338.2±24.27µs 100%
Expression (Lexer) 1751.7±204.55ns 1542.8±91.81ns 113.99999999999999%
Expression (Parser) 4.1±0.38µs 4.1±0.27µs 102%
Fibonacci (Execution) 2.3±0.10ms 2.4±0.10ms 96%
For loop (Execution) 353.1±19.76µs 354.4±36.33µs 100%
For loop (Lexer) 4.4±0.32µs 4.3±0.28µs 104%
For loop (Parser) 11.4±0.65µs 13.0±1.39µs 86.00000000000001%
Hello World (Lexer) 818.5±54.65ns 793.6±51.80ns 103%
Hello World (Parser) 1829.6±105.37ns 1904.2±116.60ns 96%
Symbols (Execution) 356.4±21.22µs 349.3±23.15µs 102%
undefined undefined 100%

@Razican Razican marked this pull request as ready for review May 23, 2020 17:59
@github-actions
Copy link

Benchmark for 2c449a5

Click to view benchmark
Test PR Benchmark Master Benchmark %
Create Realm 436.7±13.69µs 416.5±13.83µs 105%
Expression (Lexer) 2.2±0.07µs 2.0±0.06µs 109.00000000000001%
Expression (Parser) 5.3±0.06µs 5.4±0.26µs 99%
Fibonacci (Execution) 2.7±0.04ms 2.8±0.04ms 99%
For loop (Execution) 460.0±25.44µs 448.9±8.91µs 102%
For loop (Lexer) 5.8±0.11µs 5.5±0.17µs 105%
For loop (Parser) 14.5±0.41µs 15.1±0.29µs 96%
Hello World (Lexer) 1050.7±31.70ns 998.1±25.14ns 105%
Hello World (Parser) 2.4±0.05µs 2.5±0.06µs 98%
Symbols (Execution) 458.5±7.30µs 442.1±5.62µs 104%
undefined undefined 100%

@Razican Razican linked an issue May 23, 2020 that may be closed by this pull request
@Razican
Copy link
Member Author

Razican commented May 23, 2020

@jasonwilliams, @HalidOdat I think this is ready for review, in the sense that there are some nodes left, but the architecture is there. I'm starting to see that future future PRs will make merges very difficult, so I think we can land a preliminary version of this, and then modularize the rest of the nodes (and the tests) in another PR.

This PR notably fixes #376 (with a workaround), #336 and #377.

It adds a Span to the tokens, so it will be relativelly easy to implement #300. And of course, it does great progress towards #366, I will add the mising nodes to that issue.

Let me know what you think :)

PS: I also modified all static strings to be Box<str>, but this required a change in rust-gc. We would need for rust-gc to publish a new version in crates.io for this to be mergeable. We will need the help of @Manishearth for this :)

Copy link
Member

@HalidOdat HalidOdat left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This looks simply awesome!!! Good work as usual!

With 122 files changed there will be a lot of merge conflicts with future PRs so we should merge this ASAP :)

@HalidOdat HalidOdat added lexer Issues surrounding the lexer parser Issues surrounding the parser technical debt builtins PRs and Issues related to builtins/intrinsics execution Issues or PRs related to code execution labels May 24, 2020
@jasonwilliams
Copy link
Member

Will find some time to take a look at this

PS: I also modified all static strings to be Box, but this required a change in rust-gc. We would need for rust-gc to publish a new version in crates.io for this to be mergeable. We will need the help of @Manishearth for this :)

So we need that to be merged before this then, is there a link to that PR or issue?

@Razican
Copy link
Member Author

Razican commented May 24, 2020

PS: I also modified all static strings to be Box, but this required a change in rust-gc. We would need for rust-gc to publish a new version in crates.io for this to be mergeable. We will need the help of @Manishearth for this :)

So we need that to be merged before this then, is there a link to that PR or issue?

It was already merged, we only need a release in crates.io :D

@Manishearth
Copy link

Published

@Razican
Copy link
Member Author

Razican commented May 24, 2020

Published

Great! I updated the dependencies, without the Git dependency, so this is ready to be merged!

@Razican Razican force-pushed the exec_modularization branch from 0fced5b to 5f41f3f Compare May 24, 2020 18:58
Copy link
Member

@jasonwilliams jasonwilliams left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Looks good to me, lets merge and carry on after

@HalidOdat HalidOdat merged commit 4beadfc into master May 25, 2020
@HalidOdat HalidOdat deleted the exec_modularization branch May 25, 2020 13:21
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
builtins PRs and Issues related to builtins/intrinsics enhancement New feature or request execution Issues or PRs related to code execution lexer Issues surrounding the lexer parser Issues surrounding the parser technical debt
Projects
None yet
Development

Successfully merging this pull request may close these issues.

Implement exception handling Hoisting variables Optimize the TokenKind enum
4 participants