Description: Wasm rtl and wasm specific packages
This file as text.
(active) Revisions in this set:
769aeaae03f9eae322270f5800bf409e73fbbd2e,1c9280de560b65d02f03a4f1ee22df37a45084f9,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,8a3422478290827e9efb90b472ea33cc480adc9d
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
eac5353bf5d14d1f8cef4c2b15d215cf15267d4d,ae7141fb8128e5bd55f1b24333f065d9a6954761,dd88451266b736440e0d4c0b315b80723efb444c
831e6c6d757d9a73226e2b02719bf48a38d8321a,4af9b675e2d6b4ddf08231bd8c27ec6d8b79572d,d3ac07ad274b6c6b09ff9b08a9d7007aaf780aa6
22d010b9053e943452247bb24886a052dd134d4c,6b133a30cf86bfa485434401fd2fdf1f2d578f19,e59ed178daa619fe575dcab60bd4f9702e536132
563096b33ecf8bacce152fb7951ae81bd9d7967c
Clicking a revision will expand files
* Add linking examples, change pcchar to pchar
Add wasm32 CPU handling in embedded target
* fixes to the WebAssembly atomic function intrinsics
+ 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
+ added except_branchful.inc as a system unit dependency include file to wasm32/makefile.cpu
+ added AtomicAdd() and AtomicSub() intrinsics to the WebAssembly unit
+ added AtomicAnd(), AtomicOr() and AtomicXor() to the WebAssembly unit
+ added AtomicExchange() to the WebAssembly unit
+ added AtomicCompareExchange() to the WebAssembly unit
+ added AtomicLoad() to the WebAssembly unit
+ added AtomicWait() to the WebAssembly unit
+ added AtomicNotify() to the WebAssembly unit
* AtomicWait marked as inline
* added non-atomic implementations of the atomic operations in the WebAssembly unit, used when the RTL is compiled without -CTwasmthreads
* Correct windows DLL name
+ print more exceptions debug info, when the WebAssembly RTL is compiled with -dEXCDEBUG
* Comment out debug in loop
* Seems not all was committed
* Fix compilation without threads
* Remove PChar/PPChar/PPPChar defines, they are in the system unit
* Dotted filenames for package wasmtime
* since exporting webassembly globals doesn't yet work accross units, added a
workaround by using property getters and setters
* WasmEdge library import
* Git did not add .lst files
* Fix compilation in unicode rtl
* Correctly load library, make this public
* Add wasm-job for webassembly
* not automatically committed...
* Sample unit containing all browser apis
* Add create_object method
* Remove unqualified string type, use UTF8 string or Unicode string
* Create objects directly
* More complete example with dictionaries as objects
* Allow to create browser API stubs that will work on non-webassembly platforms
* Fix compilation for targets that do not have variants
Disable jvm-android target for wasm-job package because it requires sysutils unit which is not available for jvm-android
* Added nothreads unit for fake thread support. Currently only WASI
* Add TypedArray constructor
* Fix memleak, objects created directly are owned by webassembly
* set method for typed array
* Add constructor to TJSArray that accepts array of const
* Promise implementation and demo
* Make methods protected, so one can override
* Allow to cache reject/resolve
* Allow to disable monitor
* Getters & Setters for typed arrays
* Corrections for Float64
* Forgot to commit last version: allow to use thisid from function
* Hosting example for webassembly module
* Corrections from samples
* Fetch example, demo how to reconstruct object response
* Implement TJSArrayBuffer
+ added the wasm object format and the wasm32 arch to the fpcres help screen
* Define JSJSON to as to use static methods
* 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.
* Add new constructor for typed array with length
* Correct Cast class functions which were recursively calling themselves instead of JOBCreate
* Add some utility properties
* use an empty TThread implementation in rtl/wasi/tthread.inc, in case
FPC_WASM_THREADS is not defined
+ added basic WebAssembly inline assembler test
+ added test for the WebAssembly inline asm call instruction
* 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
+ 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
* NativeInt size depends on platform.
* Implement DataView properties
* Redefine (T|I)JSArrayBufferView
* Correct interface ArrayBufferView
* reduce iterations for RiscV32 for now
* API to show objects in webassembly runtime in browser
+ added WebAssembly inline asm tests for the instructions:
i32.div_s
i64.div_s
i32.div_u
i64.div_u
+ added WebAssembly inline asm test for:
i32.rem_s
i64.rem_s
i32.rem_u
i64.rem_u
+ added WebAssembly inline asm test for:
i32.and
i64.and
i32.or
i64.or
i32.xor
i64.xor
+ added WebAssembly inline asm test for:
i32.shl
i64.shl
+ added WebAssembly inline asm tests for:
i32.shr_u
i64.shr_u
+ added WebAssembly inline asm tests for:
i32.shr_s
i64.shr_s
+ added WebAssembly inline asm tests for:
i32.rotl
i64.rotl
i32.rotr
i64.rotr
+ added WebAssembly inline asm tests for:
i32.clz
i64.clz
i32.ctz
i64.ctz
i32.popcnt
i64.popcnt
* Set event handler-type properties
* String must not be shortstring
+ implemented CheckInitialStkLen for the WASI target (just returns the parameter
stklen as a result value, unmodified)
* proper implementation for the function Sptr (which returns the stack pointer) for WebAssembly
* Install error handler to examine exceptions during callback
* Correct callback handler for object tree
* Correct dictionary construction
* Add overloads with offset and length for typed array constructor
* Objects passed in callback are ours to free
* Make sure reference count is properly managed
Add missing Makefile for h68units, testinsight and wasm-oi packages
* Webassembly HTTP request API
* 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
* WebAssembly: fixed SysUtils.sleep() with large timeouts causing incorrect time
delay, due to arithmetic overflow
* 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.
* Add some utility methods to TJSarray for easier pushing of values
* Webassembly websocket support and demo
* Regexp support for wasm target
* Rename some identifiers to be more unique. Fixes issue
gitlab 0040915
* Regexp for wasm (using browser API)
* Allow message in ShowAsDebug
* Some minor improvements
* Fix warnings, hints and notes
+ added unit unix98pty. Only enabled for linux, for now, but can be enabled in the future on other unix-likes.
+ WASI threads: define FPC_WASM_WORKER_THREADS_CAN_WAIT. It is actually true in
all known cases (command line WASI or browser).
* Simple example for JOB call
* Some fixes in handling of headers
* Typecast to pointer of self() needed
* Store session info only for project files
* Make names unique across modules
* Unique names for imports
* Remove erroneously commited commented line
* switch WebAssembly RTL to provide atomic intrinsic helpers instead of Interlocked* functions
Fix TJSArray._GetStrings: exit once you get correct value, do not fall through to raising error
* with all existing RTLs switched over to the atomic intrinsics, the define FPC_SYSTEM_INTERLOCKED_USE_INTRIN can be removed again
* New fix for fpc_atomic_cmp_xchg_alu, as suggested by Sven
+ add intrinsic for 8-bit atomic cmpxchg for wasm32 (this way the fallback for cmxchg is no longer used for wasm32)
- remove unnecessary defines
* Fix compilation when using threading
+ added function fpc_wasm_invoke_helper to the WebAssembly RTL
+ initial implementation of System.Rtti.Invoke() for WebAssembly. Currently
only works with the internal linker. Not all types have been tested, yet.
* proper handling for boolean results (especially Boolean64 and QWordBool) in System.Rtti.Invoke
* also handle enumeration results and integer result sizes, other than 32-bit in System.Rtti.Invoke for WebAssembly
* Add TJSAtomics.waitAsync
* Fix compilation for unicode
* Allow host environmentto get main and self thread IDs. Needed for inter-thread messaging in browser
* API to share JOB objects between threads (if browser allows)
* Object ID must be controlled by wasm side
* ID is now handled in webassembly
* WASI: workaround for FindFirst/FindNext opening the current directory, by using its full name
* WASI: avoid using inner preopened dirs, that escape to the parent with '..',
in case there's an outer preopened dir
* moved the common WASI RTL source files and includes to a 'wasicommon' dir
* WASI system.pp: check that WebAssembly threads are always turned off for the wasip1 target, and always turned on for the wasip1threads target
* Allow wasm guest & host to be notified of wasm memory growth
* Fix compilation, probably also bug with mem size
+ API to get exception info in host environment
* performance.now interface
* Add some missing constants
* log exit to be symmetrical with entry in AllocateOSInfoBlock
* Webassembly browser storage API
* Add webassembly message channel api
* Message handler should be "of object"
* Correct type and len for unicodestring message
* API to collect locale settings from browser
* Wasm semaphore implementation
+ added except_exnref.inc (RTL support for WebAssembly exnref exceptions)
* except_native.inc renamed except_legacy.inc
* Verify correctness of timer objects
* Some extra safety checks