GarboMuffin 4aa167e523 Replace isWhiteSpace with something faster
isWhiteSpace works by trimming the entire string. This works, but in the
context we use it, this is a lot of unnecessary work.
At this point we know that `+x === 0` and we want to know if that's
because x is empty or because it actually contains 0, hence we can use
a loop that just checks for a 0 existing in the string. This relies on
the assumption that there is no x such that:
+x === 0 && x.trim().length !== 0 && !x.includes('0')

In a very biased microbenchmark (https://scratch.mit.edu/projects/788352711)
this results in a 10% performance improvement.

This also will allow us to resolve https://github.com/TurboWarp/scratch-vm/issues/115
in a later commit.
2023-01-14 22:06:26 -06:00
2022-12-19 17:12:19 -06:00
2018-05-11 08:20:20 -04:00
2020-07-16 18:43:11 -05:00
2016-06-08 16:27:38 -04:00
2017-11-20 19:18:18 -05:00
2022-11-12 20:40:19 -06:00
2022-05-22 20:09:59 -05:00
2018-06-18 13:13:09 -04:00

TurboWarp/scratch-vm

Modified Scratch VM with a JIT compiler and more features.

This is a drop-in replacement for LLK/scratch-vm.

Setup

See https://github.com/TurboWarp/scratch-gui/wiki/Getting-Started to setup the complete TurboWarp environment.

If you just want to play with the VM then it's the same process as upstream scratch-vm.

Extension authors

If you only use the standard reporter, boolean, and command block types, everything should just work without any changes.

Compiler Overview

For a high-level overview of how the compiler works, see https://docs.turbowarp.org/how

For more technical information, read the code in src/compiler.

Public API

This section was too out of date to be useful. We hope to re-add it as some point.

S
Description
Scratch VM with a JIT compiler and more features
https://turbowarp.org/
Readme MPL-2.0
35 MiB
0 Stars 2 Watchers 0 Forks
Languages
JavaScript 99.7%
HTML 0.2%