Lu Yifei
67e1ad0a5a
Merge origin/develop and adapt the specialized compiler
2026-11-08 14:23:25 +08:00
Lu Yifei
dfae5df416
chore: migrate VM repository metadata to ScCNv5
2026-11-08 14:14:59 +08:00
Thomas Weber
0cb82afe62
Query security manager extension permissions concurrently ( #400 )
2026-10-31 15:32:29 -05:00
Thomas Weber
cecd467dd2
Wait for custom fonts to load before continuing ( #401 )
2026-10-31 15:31:42 -05:00
Thomas Weber
ce39f140de
Improve extension error handling ( #399 )
...
* Improve extension error handling
* Allow loading the extension again if it fails
2026-10-31 14:15:08 -05:00
Thomas Weber
c985ca5d10
Fix snapshot tests on Windows ( #398 )
...
* Fix snapshot comparisons being backwards
* Always check out snapshots with LF endings
2026-10-31 09:54:21 -05:00
Thomas Weber
f26ff67e95
Fix some limited prototype pollution
2026-10-23 23:46:39 -05:00
Thomas Weber
984b4f4365
Always reject javascript: URLs in canEmbed
2026-10-23 22:39:44 -05:00
Thomas Weber
371839de44
Fix compiler errors ( #395 )
2026-10-19 19:09:36 -05:00
Thomas Weber
e9c6e122bf
Implement argument defaults in addAddonBlock
2026-10-18 17:08:11 -05:00
Thomas Weber
be4e8c288e
Add sampler API ( #394 )
2026-10-18 16:32:07 -05:00
Thomas Weber
8ce06bc6a8
Import most of the forkphorus test suite ( #303 )
...
forkphorus has its own test suite, most of which are regression tests for real bugs in a real compiler so it may be worth testing against.
forkphorus-befunge-eratosthenes and forkphorus-string-functions are probably the most meaningful new test cases; at the very least i wouldn't have needed a new test case in #300 to see changes in snapshots if they were merged
The tests also add coverage for specializations like "delete 1 of list" that somehow weren't in the suite before?
2026-10-18 14:49:20 -05:00
Thomas Weber
7387fa0883
Replace tap with node:test ( #393 )
2026-10-18 14:43:49 -05:00
Thomas Weber
0c8ce96233
Regenerate snapshots due to missing rebase before merge
...
3aca9363a3 was not rebased first so its new snapshots were missing changes from fd1cc6bb4f
2026-10-18 14:32:43 -05:00
Thomas Weber
3aca9363a3
Optimize jsexecute helpers ( #389 )
...
* replace Number.isNaN -> x !== x (see https://github.com/TurboWarp/scratch-vm/pull/367 for background on this though it matters less than expected)
* optimize listGet for numbers
* optimize listReplace for numbers
* optimize listDelete for first and last items
* optimize listContains / listIndexOf by hoisting work that would previously happened inside compareEqual many times
2026-10-18 13:29:37 -05:00
Thomas Weber
ec5733a9e7
Remove yields from stop all and delete clone ( #392 )
2026-10-18 13:05:45 -05:00
Lu Yifei
fd1cc6bb4f
Compile non-yielding thread entry points as regular functions ( #391 )
2026-10-18 11:12:44 -05:00
Thomas Weber
23f97bcb85
Set _monitorUpToDate at list variable creation time ( #388 )
...
Reduces unnecessary hidden class; no real observed performance change
but does seem to let V8 generate simpler code so could have wins down
the road.
2026-10-11 20:13:02 -05:00
Thomas Weber
55fd9b7c95
Fix compiler error when argument name is literal number ( #387 )
2026-10-11 19:29:56 -05:00
Thomas Weber
686f5b61e9
Optimize set pen color and color utils ( #386 )
2026-10-11 19:16:54 -05:00
Thomas Weber
cb8a394fca
Actually delete assets when unloaded ( #382 )
2026-10-11 17:17:55 -05:00
Thomas Weber
7d0d67ad9f
Fix missing optimization passes on procedures with multiple variants ( #383 )
2026-10-11 17:09:05 -05:00
Thomas Weber
87e13f8012
Fix target hidden class falling back to dictionary mode ( #385 )
...
Significant performance improvement in Chrome
2026-10-11 17:07:44 -05:00
Thomas Weber
a2441e3830
Manually inline toNotNaN ( #384 )
...
Safari's JIT enjoys this one a lot more.
2026-10-11 14:02:40 -05:00
Thomas Weber
042235b193
Fix tangent ( #381 )
...
fix https://github.com/TurboWarp/scratch-vm/issues/380
2026-10-05 20:50:07 -05:00
Thomas Weber
1fd83b48dd
Use new hidden class per variable ( #378 )
2026-10-03 20:03:38 -05:00
Thomas Weber
32b5428fab
Fix casting constant boolean interpretable string to number ( #371 )
...
They both should convert to 0
Fixes https://github.com/TurboWarp/scratch-vm/issues/359
2026-10-03 02:46:40 -05:00
Thomas Weber
8c62a150e1
Fix isNotActuallyZero on very small numbers ( #373 )
...
Fixes https://github.com/TurboWarp/scratch-vm/issues/361
2026-10-03 02:33:43 -05:00
Thomas Weber
984e05f83e
Fix type analysis of casts with partially matching input types ( #369 )
...
Fixes https://github.com/TurboWarp/scratch-vm/issues/356
2026-10-03 01:45:28 -05:00
Thomas Weber
c5bf9c3266
Fix custom reporter exit state analysis ( #368 )
...
Fixes https://github.com/TurboWarp/scratch-vm/issues/358
2026-10-03 01:39:14 -05:00
Thomas Weber
01178fb80f
Fix toNotNaN 5x performance regression in Chrome 154 ( #367 )
2026-10-01 22:09:40 -05:00
Lu Yifei
9538aa7559
feat(compiler): add program-specialized continuation backend
...
Export optimized IR and replace legacy compiled-package APIs with fused continuations. Preserve synchronous warp regions and thread lifecycle semantics; real-project performance tuning remains in progress.
2026-09-25 19:45:05 +08:00
Lu Yifei
87c48bd29e
提高CI TAP任务超时时间
2026-08-07 18:46:30 +08:00
Lu Yifei
bb787dd617
更新 npm 包信息
2026-08-07 16:00:30 +08:00
Lu Yifei
061f4bd5ee
Implement salt-based opcode lookup to support external conversions.
2026-08-06 11:27:46 +08:00
Lu Yifei
a5286f0231
Add source-stripped compiled project packages
...
- serialize and load precompiled JavaScript artifacts
- support runtime bindings and ABI validation
- add SHA-256 integrity manifests and optional signatures
- preserve assets and extension dependencies in compiled packages
- add playground, documentation, and integration coverage
2026-08-05 19:51:18 +08:00
Thomas Weber
c4823421cb
Fix toggleScript confusion when block ID is reused across targets ( #347 )
2026-07-11 23:29:37 -05:00
Thomas Weber
ccfd5f4006
Run no-op rAF workaround on Chrome Android
...
closes https://github.com/TurboWarp/scratch-vm/issues/343
2026-07-04 17:42:37 -05:00
Thomas Weber
43f13efd18
Add default URL for video sprites
2026-05-23 16:27:15 -05:00
Thomas Weber
8da02dcab3
Bump @turbowarp/scratch-svg-renderer peer dep
2026-05-23 01:41:53 -05:00
Thomas Weber
adaa47dec2
Update scratch-parser
2026-05-23 00:43:59 -05:00
Thomas Weber
925f113400
Don't start monitors if there are no targets
...
Fixes https://github.com/TurboWarp/sb3fix/issues/125 in the safest way that
hopefully has no unforseen breakages on weird behaviors
2026-05-16 01:42:59 -05:00
Thomas Weber
52f4369e63
Fix spork compatibility issue with mutation-less control_stop
...
Our editor relies on the mutation for control_stop to know if there is a connection below.
Spork does not export that mutation anymore.
Instead, we will just generate the mutation to fix errors on loading.
2026-05-03 10:27:39 -05:00
7b521ff000
Force shadow property for procedure blocks during deserialization ( #335 )
...
Co-authored-by: Cubester <78769806+CubesterYT@users.noreply.github.com >
Co-authored-by: Thomas Weber <muffin@muffin.ink >
2026-04-18 22:18:21 -05:00
Classfied3D
94276b1ee9
fix indefinite calls to analyzeScript when a large amount of procedures interlink ( #334 )
2026-04-09 18:08:06 -05:00
Thomas Weber
9f2106a290
Remove variable value safe stringification
...
I thought this may have been part of fixing a sb2 -> sb3 corruption issue.
But from commit log, it seems this was added to prevent extensions from making mistakes.
With the scratch-parser change, those mistakes are now considered features.
Seems safe to just do remove these checks all the time.
Closes https://github.com/TurboWarp/scratch-vm/pull/332
2026-03-02 22:43:29 -06:00
Thomas Weber
1ea395fe97
Don't allow reading video motion when external communication is possible ( #331 )
2026-02-08 11:22:19 -06:00
Thomas Weber
722014ee66
add sensing_online to compiler compat blocks
2026-01-24 14:05:46 -06:00
Thomas Weber
d825b5017f
add sensing_online
2026-01-24 14:01:42 -06:00
Thomas Weber
464a9c68dd
Support JS Map in externalDeltaToJS for extension compatibility
...
Nothing in Scratch uses this
2026-01-13 19:09:49 -06:00