Description: Wasm rtl and wasm specific packages

This file as text.
(active) Revisions in this set:
e376851fd8aabb05ac93bc234ae06fd9ed0cdd32,47c271dcd0635ea584023800d66d1ef8ca5ec07e,d9781bcebee08dfdbbdee90a595e92ce1fc284fd
99d66b4c93821f5b4dfbc0fc236ad0c7626d5310,362cabe6845a0769cc8e7fcd4dd5c75a74a07a85,9ba01e7aee19489072b616647ec044ce03a14a43
7fa8f514af5bf6d2e1865353b34ab56d92b54e1b,219294c02b4129d8a063626c72dc3f867ab75680,19cce3e42e46f010065146dec761dc6b00a6efc1
a916aa36d82bf3d37588c1118ad838940453e527,3cb4952745479eb8cd8b445951e8fd13f88b6fc5,1ce1a0fe1fe3642b2daca5e16b1058cad0d3b5fb
9056887aaedd811e0518ebb1b98219b561e04cba,48f115686d105165d9637ffcfcce2f10b6192d9c,27133cb66d75ae134110acf12f002d367ff04523
b93d49df9b4ba90f25219d3a4ba8536649646c09,8c8f8088ebaf68c83500668e97b9c16c41f7d92e,4e4fcaa8a286fe959e1d6595f2d3781b9b893796
f6beba0b0be3dc457baf08163f22a226dade7747,b97f3a08edca89cf8444a5261eb6e5e0fd141303,4c26e4f9894b85fe08694181a8b401a769863495
1da241c09cdd2e73286733fd00d39d8ba87cf9b5,0d375c638c3525021ac386e1985cbe35d14d85b4,5c9186a395b0fe1e118ec0122f468086d6107bcd
5dc62fae3b0cbe83c0208fcd4746a852b501b1b9,d74f81fda863cf65d6acccfd7e5120e646190c82,6a7524418a88fbcbba65b0172f047266eafead64
c4165a67a743517bd5cc39708cd8745cd1b1298c,27ab23681cb1bcf4829c99d54506b934333e3f5e,5913c17805dcd685fb9270a581121a922546b9f0
ac8fefbc2bf6056c7a32f74a33e346899fa3428f,e315a30ef4098784c515edc6a2628204a7a1f989,10d740298d54b90f5dcfdfcf8db6af3250b5f5b5
2a4f4ef420dba8797a3de8ac86ea30ea80cd1404,2824f592a3eb5fc687aa7e67f12be07aa99a245c,5bdef935f9b674313cf9ecae69696bbb9f9b88b9
b58f9bcfd08f1c9dcb58b4fbaaeea4005e2799b7,50370ff56d2eec973fb17f253b0f39a47ba7a356,2daf7f984f24ce54492ff8e1364592d705b0abe9
dbc3d6b98f66afad36744c718f39155fdaff8b12,0187580793af3512cb52831aede8af5dcb0a297d,3df063ad92962b0768b2dccb31457017390fdb3d
ec2e645719b35b7098c759c496e0308f48b88ef5,e80ce5f61f3857db8956c81de525d41b86aa2ed0,94912ab27474fef4d96349f091c504ad1e701531
7dcd89ede12e1d8f060ca5859a9c54de81ba7698,0e11fe0fc5f039939f2f85bc6896812fb1df0b83,ec21c75e05f33de9a5fbe7f7d1bab246f7a32dc0
d0a5b61b80a1c8ae6d8d0661833e9e1eb288244f,a49c0f6e0cc25a096b596e11ac5158b6a56bd96c,0c745fb257e71111588ac54b0bb4bd383751e82c
9cc08d91240df8fdc1809e3e7ece0f02d3df0946,824658874d7aa322b257688869899f15e5444805,4c3af63fad394c8e415aa459ba3d8cd305c525e1
8884c1967d07d267f78d90dff1dc9778c797957a,3fac1e7d5beacea815a2dddbd4674b027affe7e8,38ec27065b62932e0387ce4a7a998362a1f315b1
6d79054cff8fee91630149d9f439b22aa95b28c4,bbb159658a2265472a7a23571e6d2d439e409318,7f4f25488861aa4c70918b6a7bdae2db10909c15
7d1999eedb23e0560ae2e2840ae52decbf733e73,c95dfe24e7203ebc73429d5bbb839d6aba1c8b67,73867e47f92660f175f5bd2fa65d90e59825616d
4016e1accafec4aab026a040ad4e3145895d43d7,b530804eb6b28e9776875988cf3ea5dfbe7cc707,cb164667572a20b17818d90ea2279922404454f3
89cd72b71c8c567ef7f1f371860fc43faa7eb50b,0457690a8bc3590080fb5267e35311e8d19ca918,7fb83161b75365d9482736bc485e02f2cc5649c6
a57971204c103f738674e3af5fa72c940cef249f,429d04089ed2b0e89cb34ffe0b3f87a265c4c372,bcdd29b556776ae1ec8d3b81d4d926d19140fefa
124480e73adff243d2cd0e2096db03a029f95fcb,3ad7a0e716b497df356b2d8c6e799045c6aa7623,28a849a2931afcd495438a761dd63fab1615a6ba
396781408129dd8a31bd35df2e05e6807921d297,a1e4d5a51755c7e23d4f93515007afe7e46fe2c6,536b85021d2b19f24530f982d6dbddff0d0a3598
5043bdaf183c096f38d092f66dbb5207fedb85cf,c1d6cad44411473fe7c3b28e9da40f89889ba8eb,e48fdc5b0f6d6791f394510f678233d5eb9dafec
afd7d9965ab56f5432773a3f472f1663f243a73a,951d2f394212678b0ec84648dcd2b57f3cca0b04,3160e45316babdd507b140acf2999fe102699377
303c0378e9dcd43ac922491017d1ab7c3f81ae13,e579da0844fc82f72b91622902c2671c7b7c831f,b340994e1b1f886bb660aed64e0981a954414d2b
45ec51dc1f56e8511468583d99121cc942af05f3,25af7a4281eb9c7323320b0eaa5348a9daec39bf,d0b03c9c71369432011b0297674fd5bf0a5644df
a81eac24838b7adaac46f50874b2a8c92aea593c,594b96e305e14f029b70a1330c6a96ca6e930972,ce04ce42eddf132f110173b5ba7e4f103e835d17
1210747f1d4354b8f00054fb3ee496462e5c4f11,1e6061845ee7923d066cc24f650ae3ddb0044976,c88873cd46efcbc367c003cc2155e0ce63490a21
3b0d2b329a8edcdfda5005bac6fcf1fbe2070ff5,0314ba9bfdcd7bd092506e692df7b84edfa9f648,ccbc28dd85650b3db35cd414fbcca3acc1331c1e
00e528996782c384b3a03cafbf18555420898147,aef32d5de98cdd07c1843ced826ed128b84a2ab3,51fdff0e7f8ab62b1f66450fa930af1d970118ab
46a9fcc5f93074c9c37fc2539cc9b19d094286f6,c0d6efaada138f939f067562354f1dc483c5f353,9600b5276ab4e010dfe8a316557c6757515598b8
1084346b005135274fdbd693dd1ff5b744e87707,cc15c3c2de57d0039fbdcad6632349c26e6c78c6,3e2b0ac8b96d739b7f0b7f36d4ad432bd094a551
633f905b79f556c0782d6381294546ea61ecbe85,334102e3915212911b03280d719e874a35e9ee2d,1f0c72b6c18aaa6e2aefa9b6a250ccb461837e62
5ac4fd0b133541f705dd3478fb90a6f8f75ce70e,b18e3810499b15d3f0d4dd4c5612471523c18e68,ae83472a06f37feefb22a7906389ebb8d94d65a0
083ac5c1142ce6040133ec4da1318626367db612,368a77d75e78d0cae0c92ef4300117ed07afcc3d,37b7835b12bfec0382b308575ea4742223c01cc6
2cefdd35b56c48ff4f48b119b9e13582e3940d2a,5a2b045388652a7640d3e8f3dfa0f69a9d7c15a5,e03e62f013cb259d43b056de85e8eba3fd61278b
74ea291454b64f8896d015fdc9bdaf6d5db18e7b,7b213bb4e6a3221062afc1b0d3c40580603f4b9d,fc0fb5968a98f3ba261cffbb679baa41eaf563c9
45f7be1b3c9485e7b3de3c5f48debca75b4bb559,9c4a354d7bf4eba9cd3453d780a55b6041836028,7f682589c7a33e74208b71c5aad347baab8313d6
4ac0781dd8b0882f761b4887697b88e9ce903c90,d775dadced3c86c4a530ab75a0bb13575f5cd4bd,573b82c67f58bda7f6cfb5cea54c49bbc4c962ed
4c8f718a8b7e27c98cbee65db0b163b6613243ba,e94d02a06788c0953111efc08dd5a7c8da5789ee,8488c87b20efb6e3a934a9d71475ac3a24d9d6ef
40725146cc37345879b82d1edaba02fcf0687fff,f29fe358ad694e288b751a4632ffda7ed77305b8,925091d0d14658a943ff204e7f6a39819b42bc0f
5e813e62f24635c3947c5adb1efcf94dfedd2f0e,2e8b9e7e01ffbf180e5c0ac2a2a29d0e06b822a7,12db8a59b526a292182da0b43adb15e9e30b6c7c
6972d16c3ab08068898d123f5b677c6e56d96d1a,3e6ae3f887f9c69ccd23465b185b70fbe798acd1,d06dd9532c66a81d197ebfe12134a48e3d30102e
f270543bf4537afa59149e4fabe9c5a9d094f068,0b3d0594582bf3e2a12f56310f1e5fe5b8ad532d,637fa74c5c305cadcb0aad0c43b0f6a9a3c30888
008397cb492610afc8cce7a3d4b416daf4c60af0,708a479fdd177f27565d1c740c62266c590ab94b,7e89495a0950add0013733eb631483aa9ebf24e7
6286ff38cca83503949d91e60edd03639dd6056d,7703ff9b34ee48665b37f418b699a3229c0bcaf5,0977f0ac0d1ecf3284554b2613bbdd1bb03359a8
736fc12e55ab4872f92d85a6d45f038bd658f94f,9e9153b2d30c088de589ccfe57351a14d902c4a1,cf73409470dd3688b070bc658b0f72c1621797ef
266a0af993498604899b2dd3586b7bd8ccbfaf8e,e867b540344e13681b040b234101f282f30cbe60

Clicking a revision will expand files
 


* fixes to the WebAssembly atomic function intrinsics
Commit consists out of
  • M rtl/wasm32/cpuh.inc


+ implemented InterlockedIncrement, InterlockedDecrement, InterlockedExchange,
InterlockedCompareExchange and InterlockedExchangeAdd for WebAssembly in a
thread safe way, using the thread and atomics extension, when the RTL is
compiled with -dFPC_WASM_THREADS
Commit consists out of
  • M rtl/wasm32/wasm32.inc


+ added except_branchful.inc as a system unit dependency include file to wasm32/makefile.cpu
Commit consists out of
  • M rtl/wasm32/makefile.cpu


+ added AtomicAdd() and AtomicSub() intrinsics to the WebAssembly unit
Commit consists out of
  • M rtl/wasm32/webassembly.pp


+ added AtomicAnd(), AtomicOr() and AtomicXor() to the WebAssembly unit
Commit consists out of
  • M rtl/wasm32/webassembly.pp


+ added AtomicExchange() to the WebAssembly unit
Commit consists out of
  • M rtl/wasm32/webassembly.pp


+ added AtomicCompareExchange() to the WebAssembly unit
Commit consists out of
  • M rtl/wasm32/webassembly.pp


+ added AtomicLoad() to the WebAssembly unit
Commit consists out of
  • M rtl/wasm32/webassembly.pp


+ added AtomicWait() to the WebAssembly unit
Commit consists out of
  • M rtl/wasm32/webassembly.pp


+ added AtomicNotify() to the WebAssembly unit
Commit consists out of
  • M rtl/wasm32/webassembly.pp


* AtomicWait marked as inline
Commit consists out of
  • M rtl/wasm32/webassembly.pp


* added non-atomic implementations of the atomic operations in the WebAssembly unit, used when the RTL is compiled without -CTwasmthreads
Commit consists out of
  • M rtl/wasm32/webassembly.pp


* Correct windows DLL name
Commit consists out of
  • M packages/wasmtime/src/wasmtime.pp


+ print more exceptions debug info, when the WebAssembly RTL is compiled with -dEXCDEBUG
Commit consists out of
  • M rtl/wasm32/except_branchful.inc
  • M rtl/wasm32/except_native.inc


* Wasm Threads (WIP)
Commit consists out of
  • A rtl/wasi/wasmmutex.inc
  • A rtl/wasm32/wasmmem.inc


* Comment out debug in loop
Commit consists out of
  • M rtl/wasi/wasmmutex.inc


* Seems not all was committed
Commit consists out of
  • M rtl/objpas/classes/classes.inc
  • M rtl/objpas/classes/classesh.inc
  • M rtl/wasi/sysheap.inc
  • M rtl/wasi/sysosh.inc
  • M rtl/wasi/system.pp
  • M rtl/wasi/systhrd.inc
  • M rtl/wasi/tthread.inc
  • M rtl/wasm32/wasm32.inc


* Fix compilation without threads
Commit consists out of
  • M rtl/wasi/system.pp


* string -> shortstring
Commit consists out of
  • M rtl/wasi/system.pp


* since exporting webassembly globals doesn't yet work accross units, added a
workaround by using property getters and setters
Commit consists out of
  • M rtl/wasi/system.pp


* Enable monitor support
Commit consists out of
  • M rtl/aix/system.pp
  • M rtl/bsd/system.pp
  • M rtl/nativent/system.pp
  • M rtl/solaris/system.pp
  • M rtl/wasi/system.pp
  • M rtl/win32/system.pp
  • M rtl/win64/system.pp
  • M rtl/wince/system.pp


* Add wasm-job for webassembly
Commit consists out of
  • M packages/fpmake_add.inc
  • M packages/fpmake_proc.inc
  • A packages/wasm-job/fpmake.pp
  • A packages/wasm-job/namespaced/Wasm.Job.Js.pas
  • A packages/wasm-job/namespaced/Wasm.Job.Shared.pas
  • A packages/wasm-job/src/job.js.pas
  • A packages/wasm-job/src/job.shared.pas


* not automatically committed...
Commit consists out of
  • A packages/wasm-job/namespaces.lst


* Sample unit containing all browser apis
Commit consists out of
  • A packages/wasm-job/examples/job_web.pas


* Add create_object method
Commit consists out of
  • M packages/wasm-job/src/job.shared.pas


* Remove unqualified string type, use UTF8 string or Unicode string
Commit consists out of
  • M packages/wasm-job/src/job.js.pas


* Create objects directly
Commit consists out of
  • M packages/wasm-job/src/job.js.pas


* Constructor
Commit consists out of
  • M packages/wasm-job/src/job.js.pas


* More complete example with dictionaries as objects
Commit consists out of
  • M packages/wasm-job/examples/job_web.pas


* Allow to create browser API stubs that will work on non-webassembly platforms
Commit consists out of
  • M packages/wasm-job/fpmake.pp
  • A packages/wasm-job/namespaced/Wasm.Job.Stub.pas
  • M packages/wasm-job/namespaces.lst
  • A packages/wasm-job/src/job.stub.pas
  • M packages/webidl/fpmake.pp
  • A packages/webidl/namespaced/WebIdl.ToWasmStub.pp
  • M packages/webidl/namespaces.lst
  • M packages/webidl/src/webidltowasmjob.pp
  • A packages/webidl/src/webidltowasmstub.pp


* Fix compilation for targets that do not have variants
Commit consists out of
  • A packages/wasm-job/Makefile
  • M packages/wasm-job/fpmake.pp


Disable jvm-android target for wasm-job package because it requires sysutils unit which is not available for jvm-android
Commit consists out of
  • M packages/wasm-job/fpmake.pp


* Added nothreads unit for fake thread support. Currently only WASI
Commit consists out of
  • M rtl/aix/Makefile
  • M rtl/amiga/Makefile
  • M rtl/android/Makefile
  • M rtl/aros/Makefile
  • M rtl/atari/Makefile
  • M rtl/beos/Makefile
  • M rtl/darwin/Makefile
  • M rtl/dragonfly/Makefile
  • M rtl/embedded/Makefile
  • M rtl/emx/Makefile
  • M rtl/freebsd/Makefile
  • M rtl/freertos/Makefile
  • M rtl/gba/Makefile
  • M rtl/go32v2/Makefile
  • M rtl/haiku/Makefile
  • M rtl/human68k/Makefile
  • M rtl/inc/Makefile.rtl
  • A rtl/inc/nothreads.pp
  • M rtl/java/Makefile
  • M rtl/linux/Makefile
  • M rtl/macos/Makefile
  • M rtl/morphos/Makefile
  • M rtl/msdos/Makefile
  • M rtl/msxdos/Makefile
  • A rtl/namespaced/common/System.NoThreads.pp
  • M rtl/nativent/Makefile
  • M rtl/nds/Makefile
  • M rtl/netbsd/Makefile
  • M rtl/netware/Makefile
  • M rtl/netwlibc/Makefile
  • M rtl/openbsd/Makefile
  • M rtl/os2/Makefile
  • M rtl/palmos/Makefile
  • M rtl/sinclairql/Makefile
  • M rtl/solaris/Makefile
  • M rtl/symbian/Makefile
  • M rtl/wasi/Makefile
  • M rtl/wasi/Makefile.fpc
  • M rtl/watcom/Makefile
  • M rtl/wii/Makefile
  • M rtl/win16/Makefile
  • M rtl/win32/Makefile
  • M rtl/win64/Makefile
  • M rtl/wince/Makefile
  • M rtl/zxspectrum/Makefile


* Add TypedArray constructor
Commit consists out of
  • M packages/wasm-job/src/job.js.pas


* New type of argument
Commit consists out of
  • M packages/wasm-job/src/job.shared.pas


* Fix memleak, objects created directly are owned by webassembly
Commit consists out of
  • M packages/wasm-job/src/job.js.pas


* set method for typed array
Commit consists out of
  • M packages/wasm-job/src/job.js.pas


* Add length
Commit consists out of
  • M packages/wasm-job/src/job.js.pas


* Global memory object
Commit consists out of
  • M packages/wasm-job/src/job.js.pas


* Add constructor to TJSArray that accepts array of const
Commit consists out of
  • M packages/wasm-job/src/job.js.pas


* Promise implementation and demo
Commit consists out of
  • A packages/wasm-job/examples/promisedemo.lpi
  • A packages/wasm-job/examples/promisedemo.lpr
  • M packages/wasm-job/src/job.js.pas
  • M packages/wasm-job/src/job.shared.pas


* Make methods protected, so one can override
Commit consists out of
  • M packages/wasm-job/examples/job_web.pas


* Allow to cache reject/resolve
Commit consists out of
  • M packages/wasm-job/src/job.js.pas


* Allow to disable monitor
Commit consists out of
  • M rtl/aix/system.pp
  • M rtl/bsd/system.pp
  • M rtl/linux/system.pp
  • M rtl/nativent/system.pp
  • M rtl/solaris/system.pp
  • M rtl/wasi/system.pp
  • M rtl/win32/system.pp
  • M rtl/win64/system.pp
  • M rtl/wince/system.pp


* Getters & Setters for typed arrays
Commit consists out of
  • M packages/wasm-job/src/job.js.pas


* Corrections for Float64
Commit consists out of
  • M packages/wasm-job/src/job.js.pas


* Forgot to commit last version: allow to use thisid from function
Commit consists out of
  • M packages/wasm-job/src/job.js.pas


* Hosting example for webassembly module
Commit consists out of
  • A packages/wasm-job/examples/WebHost/README.md
  • A packages/wasm-job/examples/WebHost/bulma.min.css
  • A packages/wasm-job/examples/WebHost/hostconfig-template.js
  • A packages/wasm-job/examples/WebHost/index.html
  • A packages/wasm-job/examples/WebHost/simpleserver.ini
  • A packages/wasm-job/examples/WebHost/webhost.lpi
  • A packages/wasm-job/examples/WebHost/webhost.lpr
  • R100 packages/wasm-job/examples/promisedemo.lpi packages/wasm-job/examples/promise-1/promisedemo.lpi
  • R100 packages/wasm-job/examples/promisedemo.lpr packages/wasm-job/examples/promise-1/promisedemo.lpr
  • A packages/wasm-job/examples/promise-2/promisedemo2.lpi
  • A packages/wasm-job/examples/promise-2/promisedemo2.lpr


* Corrections from samples
Commit consists out of
  • M packages/wasm-job/examples/WebHost/simpleserver.ini
  • M packages/wasm-job/examples/WebHost/webhost.lpr


* Fetch example, demo how to reconstruct object response
Commit consists out of
  • A packages/wasm-job/examples/fetch/loadstrings.lpi
  • A packages/wasm-job/examples/fetch/loadstrings.lpr
  • A packages/wasm-job/examples/fetch/lorem.txt


* Implement TJSArrayBuffer
Commit consists out of
  • M packages/wasm-job/src/job.js.pas


* Define JSJSON to as to use static methods
Commit consists out of
  • M packages/wasm-job/src/job.js.pas


* in the WASI system unit initialization, call InitSystemThreads even if
FPC_WASM_THREADS is not defined (but FPC_HAS_FEATURE_THREADING is defined),
to initialize the nothread manager. This fixes various regressions when WASI
threading is disabled, caused by calls to nil pointer functions.
Commit consists out of
  • M rtl/wasi/system.pp


* Add new constructor for typed array with length
Commit consists out of
  • M packages/wasm-job/src/job.js.pas


* revert method property
Commit consists out of
  • M packages/wasm-job/src/job.js.pas


* Correct Cast class functions which were recursively calling themselves instead of JOBCreate
Commit consists out of
  • M packages/wasm-job/src/job.js.pas


* Add some utility properties
Commit consists out of
  • M packages/wasm-job/src/job.js.pas


* use an empty TThread implementation in rtl/wasi/tthread.inc, in case
FPC_WASM_THREADS is not defined
Commit consists out of
  • M rtl/wasi/tthread.inc


+ added basic WebAssembly inline assembler test
Commit consists out of
  • A tests/test/wasm/twasminlineasm1.pp


+ added test for the WebAssembly inline asm call instruction
Commit consists out of
  • M tests/test/wasm/twasminlineasm1.pp


* WASI: preserve the initial value of the stack pointer on startup, so that we
can later use the area after that, until the end of memory as an initial heap
Commit consists out of
  • M rtl/wasi/si_dll.pp
  • M rtl/wasi/si_prc.pp
  • M rtl/wasi/sysheap.inc


+ WASI: use an initial heap area, that exists between the end of the stack area,
and before the end of initially allocated memory. This recovers some memory
that was previously wasted and delays the first call to memory.grow
Commit consists out of
  • M rtl/wasi/sysheap.inc
  • M rtl/wasi/system.pp


* Add Error.Message
Commit consists out of
  • M packages/wasm-job/src/job.js.pas


* NativeInt size depends on platform.
Commit consists out of
  • M packages/wasm-job/src/job.js.pas


* Use Int32 for index
Commit consists out of
  • M packages/wasm-job/src/job.js.pas


* Implement DataView
Commit consists out of
  • M packages/wasm-job/src/job.js.pas


* Implement DataView properties
Commit consists out of
  • M packages/wasm-job/src/job.js.pas


* Redefine (T|I)JSArrayBufferView
Commit consists out of
  • M packages/wasm-job/src/job.js.pas


* Correct interface ArrayBufferView
Commit consists out of
  • M packages/wasm-job/src/job.js.pas


* reduce iterations for RiscV32 for now
Commit consists out of
  • M tests/bench/bdiv.pp


* Wrong file copied
Commit consists out of
  • M tests/test/texrtti18.pp


* API to show objects in webassembly runtime in browser
Commit consists out of
  • M packages/fpmake_add.inc
  • M packages/fpmake_proc.inc
  • A packages/wasm-oi/fpmake.pp
  • A packages/wasm-oi/src/wasm.debuginspector.api.pas
  • A packages/wasm-oi/src/wasm.debuginspector.rtti.pas
  • A packages/wasm-oi/src/wasm.debuginspector.shared.pas


* spelling fixed
Commit consists out of
  • M tests/test/tint642.pp


+ added WebAssembly inline asm tests for the instructions:
i32.div_s
i64.div_s
i32.div_u
i64.div_u
Commit consists out of
  • M tests/test/wasm/twasminlineasm1.pp


+ added WebAssembly inline asm test for:
i32.rem_s
i64.rem_s
i32.rem_u
i64.rem_u
Commit consists out of
  • M tests/test/wasm/twasminlineasm1.pp


+ added WebAssembly inline asm test for:
i32.and
i64.and
i32.or
i64.or
i32.xor
i64.xor
Commit consists out of
  • M tests/test/wasm/twasminlineasm1.pp


+ added WebAssembly inline asm test for:
i32.shl
i64.shl
Commit consists out of
  • M tests/test/wasm/twasminlineasm1.pp


+ added WebAssembly inline asm tests for:
i32.shr_u
i64.shr_u
Commit consists out of
  • M tests/test/wasm/twasminlineasm1.pp


+ added WebAssembly inline asm tests for:
i32.shr_s
i64.shr_s
Commit consists out of
  • M tests/test/wasm/twasminlineasm1.pp


+ added WebAssembly inline asm tests for:
i32.rotl
i64.rotl
i32.rotr
i64.rotr
Commit consists out of
  • M tests/test/wasm/twasminlineasm1.pp


+ added WebAssembly inline asm tests for:
i32.clz
i64.clz
i32.ctz
i64.ctz
i32.popcnt
i64.popcnt
Commit consists out of
  • M tests/test/wasm/twasminlineasm1.pp


* Remove debug writelns
Commit consists out of
  • M packages/wasm-oi/src/wasm.debuginspector.rtti.pas


* Set event handler-type properties
Commit consists out of
  • M packages/wasm-job/examples/job_web.pas


* String must not be shortstring
Commit consists out of
  • M packages/wasm-oi/src/wasm.debuginspector.api.pas


* Send properties sorted
Commit consists out of
  • M packages/wasm-oi/src/wasm.debuginspector.rtti.pas


+ implemented CheckInitialStkLen for the WASI target (just returns the parameter
stklen as a result value, unmodified)
Commit consists out of
  • M rtl/wasi/system.pp


* proper implementation for the function Sptr (which returns the stack pointer) for WebAssembly
Commit consists out of
  • M rtl/wasm32/wasm32.inc


* Install error handler to examine exceptions during callback
Commit consists out of
  • M packages/wasm-job/src/job.js.pas


* Export get_object_tree
Commit consists out of
  • M packages/wasm-oi/src/wasm.debuginspector.api.pas


* Correct callback handler for object tree
Commit consists out of
  • M packages/wasm-oi/src/wasm.debuginspector.rtti.pas


* Correct dictionary construction
Commit consists out of
  • M packages/wasm-job/examples/job_web.pas


* Add CopyToMemory
Commit consists out of
  • M packages/wasm-job/src/job.js.pas
  • M packages/wasm-job/src/job.shared.pas


* Objects passed in callback are ours to free
Commit consists out of
  • M packages/wasm-job/src/job.js.pas


* Add overloads with offset and length for typed array constructor
Commit consists out of
  • M packages/wasm-job/src/job.js.pas


* Make sure reference count is properly managed
Commit consists out of
  • M packages/wasm-job/src/job.js.pas


Add missing Makefile for h68units, testinsight and wasm-oi packages
Commit consists out of
  • A packages/h68units/Makefile
  • A packages/testinsight/Makefile
  • A packages/wasm-oi/Makefile


* Webassembly HTTP request API
Commit consists out of
  • M packages/fpmake_add.inc
  • M packages/fpmake_proc.inc
  • A packages/wasm-utils/demo/http/wasmhttpdemo.lpi
  • A packages/wasm-utils/demo/http/wasmhttpdemo.pp
  • A packages/wasm-utils/fpmake.pp
  • A packages/wasm-utils/src/wasm.http.api.pas
  • A packages/wasm-utils/src/wasm.http.objects.pas
  • A packages/wasm-utils/src/wasm.http.shared.pas


* WebAssembly threads: in TThread.WaitFor, call CheckSynchronize in a loop,
while waiting on a thread that isn't finished, but the waiting happens on the
main thread. This fixes the hang in test tb0636.pp
Commit consists out of
  • M rtl/wasi/tthread.inc


* WebAssembly: fixed SysUtils.sleep() with large timeouts causing incorrect time
delay, due to arithmetic overflow
Commit consists out of
  • M rtl/wasi/sysutils.pp


* WebAssembly threads: fix race condition, which causes sometimes an abandoned
basic event to be reported as signalled. This should fix the test tbrtlevt.pp
sometimes failing.
Commit consists out of
  • M rtl/wasi/systhrd.inc


* Add some utility methods to TJSarray for easier pushing of values
Commit consists out of
  • M packages/wasm-job/src/job.js.pas


* Webassembly websocket support and demo
Commit consists out of
  • A packages/wasm-utils/demo/README.md
  • A packages/wasm-utils/demo/websocket/wasmwebsocketdemo.lpi
  • A packages/wasm-utils/demo/websocket/wasmwebsocketdemo.pp
  • M packages/wasm-utils/fpmake.pp
  • A packages/wasm-utils/src/wasm.websocket.api.pas
  • A packages/wasm-utils/src/wasm.websocket.objects.pas
  • A packages/wasm-utils/src/wasm.websocket.shared.pas


* Regexp support for wasm target
Commit consists out of
  • M packages/wasm-utils/demo/README.md
  • A packages/wasm-utils/demo/regexp/wasmregexpdemo.lpi
  • A packages/wasm-utils/demo/regexp/wasmregexpdemo.pp
  • M packages/wasm-utils/fpmake.pp
  • A packages/wasm-utils/src/wasm.regexp.api.pas
  • A packages/wasm-utils/src/wasm.regexp.objects.pas
  • A packages/wasm-utils/src/wasm.regexp.shared.pas


* Rename some identifiers to be more unique. Fixes issue gitlab 0040915
Commit consists out of
  • M packages/wasm-utils/src/wasm.regexp.objects.pas
  • M packages/wasm-utils/src/wasm.regexp.shared.pas
  • M packages/wasm-utils/src/wasm.websocket.shared.pas


* Add license header
Commit consists out of
  • M packages/wasm-utils/demo/regexp/wasmregexpdemo.pp
  • M packages/wasm-utils/src/wasm.regexp.api.pas
  • M packages/wasm-utils/src/wasm.regexp.objects.pas
  • M packages/wasm-utils/src/wasm.regexp.shared.pas


* Allow to set lastindex
Commit consists out of
  • M packages/wasm-utils/src/wasm.regexp.api.pas
  • M packages/wasm-utils/src/wasm.regexp.objects.pas
  • M packages/wasm-utils/src/wasm.regexp.shared.pas


* Regexp for wasm (using browser API)
Commit consists out of
  • M packages/vcl-compat/fpmake.pp
  • M packages/vcl-compat/src/system.regularexpressionscore.pp
  • M packages/wasm-utils/fpmake.pp
  • A packages/wasm-utils/src/wasm.pcrebridge.pas


* CopyFromMemory
Commit consists out of
  • M packages/wasm-job/src/job.js.pas


* Correct export name
Commit consists out of
  • M packages/wasm-job/src/job.js.pas
  • M packages/wasm-job/src/job.shared.pas


* Add timer API and demo
Commit consists out of
  • M packages/wasm-utils/demo/README.md
  • A packages/wasm-utils/demo/timer/timerdemo.lpi
  • A packages/wasm-utils/demo/timer/timerdemo.pp
  • M packages/wasm-utils/fpmake.pp
  • M packages/wasm-utils/src/wasm.http.api.pas
  • A packages/wasm-utils/src/wasm.logger.api.pas
  • A packages/wasm-utils/src/wasm.timer.api.pas
  • A packages/wasm-utils/src/wasm.timer.objects.pas
  • A packages/wasm-utils/src/wasm.timer.shared.pas
  • M packages/wasm-utils/src/wasm.websocket.api.pas


* JOB debugobject call
Commit consists out of
  • M packages/wasm-job/src/job.js.pas
  • M packages/wasm-job/src/job.shared.pas


* Allow message in ShowAsDebug
Commit consists out of
  • M packages/wasm-job/src/job.js.pas


* Some minor improvements
Commit consists out of
  • M packages/wasm-utils/demo/timer/timerdemo.pp
  • M packages/wasm-utils/src/wasm.http.api.pas
  • M packages/wasm-utils/src/wasm.logger.api.pas
  • M packages/wasm-utils/src/wasm.websocket.api.pas


DumpLiveObjects call
Commit consists out of
  • M packages/wasm-job/src/job.js.pas


* Fix warnings, hints and notes
Commit consists out of
  • M packages/wasm-utils/src/wasm.websocket.api.pas
  • M packages/wasm-utils/src/wasm.websocket.objects.pas


* Fix memleak
Commit consists out of
  • M packages/wasm-job/src/job.js.pas


+ added unit unix98pty. Only enabled for linux, for now, but can be enabled in the future on other unix-likes.
Commit consists out of
  • M rtl/aix/Makefile
  • M rtl/amiga/Makefile
  • M rtl/android/Makefile
  • M rtl/aros/Makefile
  • M rtl/atari/Makefile
  • M rtl/beos/Makefile
  • M rtl/darwin/Makefile
  • M rtl/dragonfly/Makefile
  • M rtl/embedded/Makefile
  • M rtl/emx/Makefile
  • M rtl/freebsd/Makefile
  • M rtl/freertos/Makefile
  • M rtl/gba/Makefile
  • M rtl/go32v2/Makefile
  • M rtl/haiku/Makefile
  • M rtl/human68k/Makefile
  • M rtl/inc/Makefile.rtl
  • M rtl/java/Makefile
  • M rtl/linux/Makefile
  • M rtl/linux/Makefile.fpc
  • M rtl/macos/Makefile
  • M rtl/morphos/Makefile
  • M rtl/msdos/Makefile
  • M rtl/msxdos/Makefile
  • A rtl/namespaced/common/UnixApi.Unix98.PTY.pp
  • M rtl/nativent/Makefile
  • M rtl/nds/Makefile
  • M rtl/netbsd/Makefile
  • M rtl/netware/Makefile
  • M rtl/netwlibc/Makefile
  • M rtl/openbsd/Makefile
  • M rtl/os2/Makefile
  • M rtl/palmos/Makefile
  • M rtl/ps1/Makefile
  • M rtl/sinclairql/Makefile
  • M rtl/solaris/Makefile
  • M rtl/symbian/Makefile
  • A rtl/unix/unix98pty.pp
  • M rtl/wasi/Makefile
  • M rtl/watcom/Makefile
  • M rtl/wii/Makefile
  • M rtl/win16/Makefile
  • M rtl/win32/Makefile
  • M rtl/win64/Makefile
  • M rtl/wince/Makefile
  • M rtl/zxspectrum/Makefile


+ WASI threads: define FPC_WASM_WORKER_THREADS_CAN_WAIT. It is actually true in
all known cases (command line WASI or browser).
Commit consists out of
  • M rtl/wasi/systhrd.inc


* Simple example for JOB call
Commit consists out of
  • A packages/wasm-job/examples/bulma.min.css
  • A packages/wasm-job/examples/hostsimpletest.lpi
  • A packages/wasm-job/examples/hostsimpletest.lpr
  • A packages/wasm-job/examples/index.html
  • A packages/wasm-job/examples/simple.lpi
  • A packages/wasm-job/examples/simple.lpr
  • A packages/wasm-job/examples/simpleserver.ini


* Some fixes in handling of headers
Commit consists out of
  • M packages/wasm-utils/src/wasm.http.objects.pas


* Typecast to pointer of self() needed
Commit consists out of
  • M packages/wasm-utils/src/wasm.timer.objects.pas


* Store session info only for project files
Commit consists out of
  • M packages/wasm-utils/demo/timer/timerdemo.lpi


* Make names unique across modules
Commit consists out of
  • M packages/wasm-utils/src/wasm.timer.shared.pas


* Unique names for imports
Commit consists out of
  • M packages/wasm-utils/src/wasm.websocket.shared.pas


* Add SharedMemoryBuffer
Commit consists out of
  • M packages/wasm-job/src/job.js.pas


* Fix compilation
Commit consists out of
  • M packages/wasm-utils/demo/websocket/wasmwebsocketdemo.pp


* Remove erroneously commited commented line
Commit consists out of
  • M packages/wasm-utils/src/wasm.timer.objects.pas


* Atomics
Commit consists out of
  • M packages/wasm-job/src/job.js.pas


* switch WebAssembly RTL to provide atomic intrinsic helpers instead of Interlocked* functions
Commit consists out of
  • M rtl/wasm32/wasm32.inc


Fix TJSArray._GetStrings: exit once you get correct value, do not fall through to raising error
Commit consists out of
  • M packages/wasm-job/src/job.js.pas


* with all existing RTLs switched over to the atomic intrinsics, the define FPC_SYSTEM_INTERLOCKED_USE_INTRIN can be removed again
Commit consists out of
  • M rtl/aarch64/aarch64.inc
  • M rtl/amiga/m68k/m68kamiga.inc
  • M rtl/arm/arm.inc
  • M rtl/arm/thumb.inc
  • M rtl/arm/thumb2.inc
  • M rtl/avr/avr.inc
  • M rtl/i386/i386.inc
  • M rtl/i8086/i8086.inc
  • M rtl/inc/generic.inc
  • M rtl/loongarch64/loongarch64.inc
  • M rtl/m68k/m68k.inc
  • M rtl/mips/mips.inc
  • M rtl/powerpc/powerpc.inc
  • M rtl/powerpc64/powerpc64.inc
  • M rtl/riscv32/riscv32.inc
  • M rtl/riscv64/riscv64.inc
  • M rtl/sparc/sparc.inc
  • M rtl/sparc64/sparc64.inc
  • M rtl/wasm32/wasm32.inc
  • M rtl/x86_64/x86_64.inc
  • M rtl/xtensa/xtensa.inc
  • M rtl/z80/z80.inc


* New fix for fpc_atomic_cmp_xchg_alu, as suggested by Sven
Commit consists out of
  • M rtl/inc/generic.inc
  • M rtl/wasm32/cpuh.inc
  • M rtl/wasm32/wasm32.inc


+ add intrinsic for 8-bit atomic cmpxchg for wasm32 (this way the fallback for cmxchg is no longer used for wasm32)
Commit consists out of
  • M rtl/wasm32/wasm32.inc


- remove unnecessary defines
Commit consists out of
  • M rtl/wasm32/wasm32.inc


* Fix compilation when using threading
Commit consists out of
  • M rtl/wasm32/wasm32.inc


+ added function fpc_wasm_invoke_helper to the WebAssembly RTL
Commit consists out of
  • M rtl/inc/compproc.inc
  • M rtl/wasm32/wasm32.inc


+ initial implementation of System.Rtti.Invoke() for WebAssembly. Currently
only works with the internal linker. Not all types have been tested, yet.
Commit consists out of
  • M packages/rtl-objpas/fpmake.pp
  • M packages/rtl-objpas/src/inc/rtti.pp
  • A packages/rtl-objpas/src/wasm32/invoke.inc


* proper handling for boolean results (especially Boolean64 and QWordBool) in System.Rtti.Invoke
Commit consists out of
  • M packages/rtl-objpas/src/wasm32/invoke.inc


* also handle enumeration results and integer result sizes, other than 32-bit in System.Rtti.Invoke for WebAssembly
Commit consists out of
  • M packages/rtl-objpas/src/wasm32/invoke.inc


* Add TJSAtomics.waitAsync
Commit consists out of
  • M packages/wasm-job/src/job.js.pas


* Fix compilation for unicode
Commit consists out of
  • M packages/wasm-job/src/job.js.pas


* Assign result in async
Commit consists out of
  • M packages/wasm-job/src/job.js.pas


* Allow host environmentto get main and self thread IDs. Needed for inter-thread messaging in browser
Commit consists out of
  • M rtl/wasi/systhrd.inc


* API to share JOB objects between threads (if browser allows)
Commit consists out of
  • M packages/wasm-job/fpmake.pp
  • A packages/wasm-job/namespaced/Wasm.Job.Threading.pas
  • M packages/wasm-job/namespaces.lst
  • M packages/wasm-job/src/job.js.pas
  • M packages/wasm-job/src/job.shared.pas
  • A packages/wasm-job/src/job.threading.pas


* Object ID must be controlled by wasm side
Commit consists out of
  • M packages/wasm-job/src/job.js.pas
  • M packages/wasm-job/src/job.shared.pas


* ID is now handled in webassembly
Commit consists out of
  • M packages/wasm-utils/src/wasm.websocket.api.pas
  • M packages/wasm-utils/src/wasm.websocket.objects.pas


* WASI: workaround for FindFirst/FindNext opening the current directory, by using its full name
Commit consists out of
  • M rtl/wasi/wasiutil.pp


* WASI: avoid using inner preopened dirs, that escape to the parent with '..',
in case there's an outer preopened dir
Commit consists out of
  • M rtl/wasi/system.pp


* moved the common WASI RTL source files and includes to a 'wasicommon' dir
Commit consists out of
  • R100 rtl/wasip1/classes.pp rtl/wasicommon/classes.pp
  • R100 rtl/wasip1/dos.pp rtl/wasicommon/dos.pp
  • R100 rtl/wasip1/rtldefs.inc rtl/wasicommon/rtldefs.inc
  • R100 rtl/wasip1/si_dll.pp rtl/wasicommon/si_dll.pp
  • R100 rtl/wasip1/si_prc.pp rtl/wasicommon/si_prc.pp
  • R100 rtl/wasip1/sysdir.inc rtl/wasicommon/sysdir.inc
  • R100 rtl/wasip1/sysfile.inc rtl/wasicommon/sysfile.inc
  • R100 rtl/wasip1/sysheap.inc rtl/wasicommon/sysheap.inc
  • R100 rtl/wasip1/sysos.inc rtl/wasicommon/sysos.inc
  • R100 rtl/wasip1/sysosh.inc rtl/wasicommon/sysosh.inc
  • R100 rtl/wasip1/system.pp rtl/wasicommon/system.pp
  • R100 rtl/wasip1/systhrd.inc rtl/wasicommon/systhrd.inc
  • R100 rtl/wasip1/sysutils.pp rtl/wasicommon/sysutils.pp
  • R100 rtl/wasip1/tthread.inc rtl/wasicommon/tthread.inc
  • R100 rtl/wasip1/wasiapi.pp rtl/wasicommon/wasiapi.pp
  • R100 rtl/wasip1/wasiinc/wasiprocs.inc rtl/wasicommon/wasiinc/wasiprocs.inc
  • R100 rtl/wasip1/wasiinc/wasitypes.inc rtl/wasicommon/wasiinc/wasitypes.inc
  • R100 rtl/wasip1/wasiutil.pp rtl/wasicommon/wasiutil.pp
  • R100 rtl/wasip1/wasmmutex.inc rtl/wasicommon/wasmmutex.inc
  • M rtl/wasip1/Makefile
  • M rtl/wasip1/Makefile.fpc
  • M rtl/wasip1threads/Makefile
  • M rtl/wasip1threads/Makefile.fpc


* WASI system.pp: check that WebAssembly threads are always turned off for the wasip1 target, and always turned on for the wasip1threads target
Commit consists out of
  • M rtl/wasicommon/system.pp


* Allow wasm guest & host to be notified of wasm memory growth
Commit consists out of
  • M packages/wasm-utils/fpmake.pp
  • M rtl/wasicommon/sysheap.inc
  • M rtl/wasicommon/system.pp


* forgot to commit
Commit consists out of
  • A packages/wasm-utils/src/wasm.memutils.pas


* License header
Commit consists out of
  • M packages/wasm-utils/src/wasm.pcrebridge.pas


+ API to get exception info in host environment
Commit consists out of
  • M packages/wasm-utils/fpmake.pp
  • A packages/wasm-utils/src/wasm.exceptions.pas


* Compile in mode objfpc
Commit consists out of
  • M packages/wasm-utils/src/wasm.exceptions.pas