Description: Wasm rtl and wasm specific packages

This file as text.
(active) Revisions in this set:
769aeaae03f9eae322270f5800bf409e73fbbd2e,e376851fd8aabb05ac93bc234ae06fd9ed0cdd32,47c271dcd0635ea584023800d66d1ef8ca5ec07e
d9781bcebee08dfdbbdee90a595e92ce1fc284fd,99d66b4c93821f5b4dfbc0fc236ad0c7626d5310,362cabe6845a0769cc8e7fcd4dd5c75a74a07a85
9ba01e7aee19489072b616647ec044ce03a14a43,7fa8f514af5bf6d2e1865353b34ab56d92b54e1b,219294c02b4129d8a063626c72dc3f867ab75680
19cce3e42e46f010065146dec761dc6b00a6efc1,a916aa36d82bf3d37588c1118ad838940453e527,3cb4952745479eb8cd8b445951e8fd13f88b6fc5
1ce1a0fe1fe3642b2daca5e16b1058cad0d3b5fb,9056887aaedd811e0518ebb1b98219b561e04cba,48f115686d105165d9637ffcfcce2f10b6192d9c
27133cb66d75ae134110acf12f002d367ff04523,b93d49df9b4ba90f25219d3a4ba8536649646c09,8c8f8088ebaf68c83500668e97b9c16c41f7d92e
4e4fcaa8a286fe959e1d6595f2d3781b9b893796,f6beba0b0be3dc457baf08163f22a226dade7747,fb73ad3411add5e599beaf06b5b0da8bf9d7df05
08c8e0ec668cdaebfb9a8a0a6daa854b4f2b9e33,b97f3a08edca89cf8444a5261eb6e5e0fd141303,01589aa69367f1bc7160c3d86b1e8f2facf2353b
28dba2e7217c7cb560ec81fe6241d97349c3663d,9bb1cda8b5ccbb80e3d1a65cf6d490bb7bef7939,a36fca37f10da90ddc22569d6913ac7dcf9c14f4
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
1210747f1d4354b8f00054fb3ee496462e5c4f11,ce04ce42eddf132f110173b5ba7e4f103e835d17,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
d520f1df0baa2a96adb5f4506ff855419529ca82,cf73409470dd3688b070bc658b0f72c1621797ef,266a0af993498604899b2dd3586b7bd8ccbfaf8e
e867b540344e13681b040b234101f282f30cbe60,8353fa6c811f455e791f284b0c525ee4e38d725a,163f97b84e7c3728961f60ffe0f10e25001cf189
0a8f1b257dde0f079ef7344ce210ad5ee2dd2eea,fdc19ea05117ea6498fb1526cd4a2cd03735e83f,92eb7ba81fb19495c752ab10db47de92c973e8ab
17ae93f916438ff444b4eb0a8a1970412c35892e

Clicking a revision will expand files
 


* Add linking examples, change pcchar to pchar
Commit consists out of
  • M packages/wasmtime/examples/gcd.lpi
  • M packages/wasmtime/examples/gcd.pp
  • M packages/wasmtime/examples/helloworld.pp
  • A packages/wasmtime/examples/linking.lpi
  • A packages/wasmtime/examples/linking.pp
  • A packages/wasmtime/examples/linking1.wat
  • A packages/wasmtime/examples/linking2.wat
  • M packages/wasmtime/examples/memory.lpi
  • M packages/wasmtime/examples/memory.pp
  • M packages/wasmtime/src/wasmtime.pp


* 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


* Remove PChar/PPChar/PPPChar defines, they are in the system unit
Commit consists out of
  • M packages/libcups/src/cupsdyn.pp
  • M packages/wasmtime/src/wasmtime.pp
  • M packages/winunits-jedi/src/jwawinldap.pas
  • M packages/winunits-jedi/src/jwawintype.pas


* Dotted filenames for package wasmtime
Commit consists out of
  • A packages/wasmtime/namespaced/Api.WasmTime.pp
  • A packages/wasmtime/namespaces.lst
  • M packages/wasmtime/src/wasmtime.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


* WasmEdge library import
Commit consists out of
  • M packages/fpmake_add.inc
  • M packages/fpmake_proc.inc
  • A packages/wasmedge/Makefile
  • A packages/wasmedge/fpmake.pp
  • A packages/wasmedge/namespaced/Api.WasmEdge.pp
  • A packages/wasmedge/src/libwasmedge.pp


* Git did not add .lst files
Commit consists out of
  • A packages/wasmedge/namespaces.lst


* Fix compilation in unicode rtl
Commit consists out of
  • M packages/wasmedge/src/libwasmedge.pp


* Correctly load library, make this public
Commit consists out of
  • M packages/wasmedge/src/libwasmedge.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


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


* Objects passed in callback are ours to free
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


* Fix compilation, probably also bug with mem size
Commit consists out of
  • M rtl/wasm32/wasmmem.inc


* 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


* Demo for wasmedge
Commit consists out of
  • A packages/wasmedge/examples/fibonacci.wasm
  • A packages/wasmedge/examples/fibonacci.wat
  • A packages/wasmedge/examples/runfib.lpi
  • A packages/wasmedge/examples/runfib.lpr


* performance.now interface
Commit consists out of
  • M packages/wasm-utils/src/wasm.timer.api.pas
  • M packages/wasm-utils/src/wasm.timer.objects.pas
  • M packages/wasm-utils/src/wasm.timer.shared.pas


* Add some missing constants
Commit consists out of
  • M packages/wasm-utils/src/wasm.websocket.shared.pas


* log exit to be symmetrical with entry in AllocateOSInfoBlock
Commit consists out of
  • M rtl/wasm32/wasmmem.inc


* Webassembly browser storage API
Commit consists out of
  • M packages/wasm-utils/fpmake.pp
  • A packages/wasm-utils/src/wasm.storage.api.pas
  • A packages/wasm-utils/src/wasm.storage.objects.pas
  • A packages/wasm-utils/src/wasm.storage.shared.pas


* Demo for storage
Commit consists out of
  • A packages/wasm-utils/demo/storage/demostorage.lpi
  • A packages/wasm-utils/demo/storage/demostorage.lpr