147 Commits

Author SHA1 Message Date
Johan B.W. de Vries
be28450658 Converted fractional, fixed integral 2025-04-06 12:58:40 +02:00
Johan B.W. de Vries
4001b086db Cleanup, got rid of OPERATOR_MAP 2025-04-06 12:58:40 +02:00
Johan B.W. de Vries
19a29b7327 Migrated Num 2025-04-06 12:58:40 +02:00
Johan B.W. de Vries
ffd11c4f72 Started on a type class system 2025-04-06 12:58:40 +02:00
Johan B.W. de Vries
5d9ef0e276 Code review
Added a test, simplified another and added
a lot of TODO's.
2025-04-06 12:58:20 +02:00
Johan B.W. de Vries
521171540b Properly implemented test_crc32
Also extended the hack around u8 to u32 cast used
in crc32 - its type was lost, so it would just cast
to whatever the environment was expecting.

Had to do_format_check=False since the file has
some comments and such.
2025-04-05 16:41:46 +02:00
Johan B.W. de Vries
3e916a242e Minor fixes
- Fix python version in docs
- Made a note on which CRC32 we're using in the example
- Removed a redundant parameter
2025-04-05 16:19:26 +02:00
Johan B.W. de Vries
96f52a274c Minor cleanup
- Removed unused stubs
- Removed wabt dependency since wasmtime can compile
  wat2wasm as well.
- Removed wasm2c references, it was never tested.
2025-04-05 16:02:55 +02:00
Johan B.W. de Vries
5c537f712e Project update
Various updates to bring the project uptodate.

- Updated required packages
- Removed runtimes that are not being updated
- wasmtime is for now the only supported runtime
- Implements imports for wasmtime runtime
- Fixes a memory access bug for wasmtime runtime
- compile_wasm is now optional - runtimes have to
  implement and call this themselves
- Typing fixes
- Linting fixes
2025-04-05 15:43:49 +02:00
Johan B.W. de Vries
97b61e3ee1 Test generation framework with typing improvements
Prior to this PR, each type would have its own handwritten
test suite. The end result was that not all types were tested
for all situations.

This PR adds a framework based on a Markdown file, which
generates the basic tests for the types defined in json
files. These are auto generated and updated by the Makefile
before the test suite is run.

Also, a number of unsupported type combinations are now
supported.

Also, we now support negative literals.

Also, allocation calculation fixes for nested types.

Also, the test helpers can now properly import and export
typed variables such as bytes, static arrays and tuples. This
may come in handy when it comes to phasm platform wanting to
route data.

Also, adds better support for i8 type.

Also, started on a runtime.py, since there's quite some code
now that deals with compile time handling of WebAssembly stuff.

Also, minor improvement to the type constrains, namely we
better match 'tuple' literals with static array types.

Also, reduced spam when printing the type analysis results;
constraints that go back on the backlog are now no longer
printed one by one. It now also prints the end results of
the typing analysis.

Also, reorganized the big test_primitives test into type
classes.

Also, replaced pylint with ruff.
2023-11-15 12:52:23 +01:00
Johan B.W. de Vries
fd3939a680 Feat: Use struct in tuple 2023-11-10 15:35:16 +01:00
Johan B.W. de Vries
16ec664cb6 Feature: Tuples with tuples in constants 2023-11-10 15:23:10 +01:00
Johan B.W. de Vries
de92504394 Cleanup: DataBlock as part of the constants
As they can refer to other constants which are stored in
memory.
2023-11-10 15:02:07 +01:00
Johan B.W. de Vries
1536ea0bbb Enable use of bytes in constants
Including using them in tuple constants.
2023-11-10 14:54:22 +01:00
Johan B.W. de Vries
20d177e2c5 Add partial tuple of tuple support 2023-11-10 14:00:29 +01:00
Johan B.W. de Vries
a85129254d Adds partial additional debugging info 2023-11-10 12:52:14 +01:00
Johan B.W. de Vries
0aa8207987 Import service names 2023-11-07 10:51:55 +01:00
Johan B.W. de Vries
cea236494f Bytes constants 2023-11-07 10:51:43 +01:00
Johan B.W. de Vries
e6610a6e96 Adds a todo note 2023-01-29 12:42:38 +01:00
Johan B.W. de Vries
205897101f Adds a typing system to Phasm 2023-01-07 16:24:50 +01:00
c02afb05f4 Merge pull request 'Speedup foldl over bytes' (#2) from optimize_fold_bytes_inline_subscript_bytes_call into master
Reviewed-on: #2
2022-08-21 13:39:44 +00:00
Johan B.W. de Vries
5ad5a9c064 Speedup foldl over bytes
Prior to this PR, the compiler would call stdlib.types's
__subscript_bytes__.

However, that function performs some checks we do not need.

After this MR, folding iterates directly over the bytes
memory, saving the memory access checks and the function
calls. This gets us a speedup of about 43% less CPU time
used on Firefox.

Also, by default, the CRC32 page runs a shorter timing test.
2022-08-21 15:38:11 +02:00
2970093c8f Merge pull request 'MVP' (#1) from idea_crc32 into master
Reviewed-on: #1
2022-08-21 12:59:20 +00:00
Johan B.W. de Vries
f683961af8 Timing results
Looks like WebAssembly in Chromium is about 35% faster, but the
Javascript engine in Firefox is another 59% faster
2022-08-21 14:57:43 +02:00
Johan B.W. de Vries
7a8b1baa25 Some repo cleanup 2022-08-20 18:21:23 +02:00
Johan B.W. de Vries
98167cfdec Made tests more consistent. Implemented CRC32 test. 2022-08-20 18:00:20 +02:00
Johan B.W. de Vries
e589223dbb Static Arrays. CRC32 compiles \o/
Doesn't give right answer yet and out of bound check fails.
No constructor yet for static arrays, but module constants
work. Which don't work yet for tuples and structs.

Also, u32 for indexing please.

Also, more module constant types.
2022-08-18 20:53:21 +02:00
Johan B.W. de Vries
c4ee2ab3dc Memory initialization is now done during compilation
Also, the user can now define tuple module constants
2022-08-17 21:07:33 +02:00
Johan B.W. de Vries
bac17f47eb ModuleConstant definitions and references 2022-08-16 21:25:03 +02:00
Johan B.W. de Vries
d051160244 Bit shifting 2022-08-16 20:55:20 +02:00
Johan B.W. de Vries
75d7e05519 First uint cast, more options for folding 2022-08-16 20:38:41 +02:00
Johan B.W. de Vries
ad6ca71c53 More bitwise ops. Steps towards CRC32 2022-08-12 21:50:42 +02:00
Johan B.W. de Vries
b6fb0d45b6 Implements foldl 2022-08-11 19:56:47 +02:00
Johan B.W. de Vries
0cf8a246fe Reworked compiler so it uses WasmGenerator
Also, started work on foldl

Also, added a missing FIXME
2022-08-10 20:51:01 +02:00
Johan B.W. de Vries
451a8e9158 Removes the old ___new_reference___ allocator 2022-08-09 20:42:02 +02:00
Johan B.W. de Vries
4881cb6d4b Moved ___access_bytes_index___ to the right place
Also, added length test to buffer example
2022-08-09 20:34:03 +02:00
Johan B.W. de Vries
a0d575f61f Implements __alloc_bytes__, uses it in the buffer example
Also, updated todo, remove broken code from buffer example
2022-08-09 20:21:59 +02:00
Johan B.W. de Vries
a13713d709 Cleanup to helpers, making use of runners 2022-08-09 19:04:40 +02:00
Johan B.W. de Vries
41b47e43d6 Implements RunnerWasmer, makes uses of its wat2wasm 2022-08-07 14:46:20 +02:00
Johan B.W. de Vries
0edd04c207 Adds RunnerWasmtime 2022-08-07 14:12:37 +02:00
Johan B.W. de Vries
58424cf2a0 Adds runner for pywasm 2022-08-06 20:50:43 +02:00
Johan B.W. de Vries
253974df24 Adds runner classes to tests, implements xor for u8, u32, u64 2022-08-06 20:11:39 +02:00
Johan B.W. de Vries
c5e2744b3e Moved stdlib.alloc to the new generator 2022-08-06 14:52:57 +02:00
Johan B.W. de Vries
a5c68065d7 More ideas about easy code generation 2022-08-06 13:44:11 +02:00
Johan B.W. de Vries
fea817ca00 Added more robust and easy way to generate WASM 2022-08-06 12:43:46 +02:00
Johan B.W. de Vries
e03f038cf9 More work on allocator 2022-08-04 20:51:59 +02:00
Johan B.W. de Vries
b42ae275b9 Start on new allocator 2022-08-04 20:09:01 +02:00
Johan B.W. de Vries
fe864e6b9d Example code 2022-07-20 20:40:26 +02:00
Johan B.W. de Vries
a83858aca7 Adds u32 and u64
Also, adds some range checks to constants.
2022-07-09 14:22:38 +02:00
Johan B.W. de Vries
89ad648f34 Moved rendering to codestyle, parsing to parser
Also, removed name argument when parsing, wasn't used.
2022-07-09 14:04:40 +02:00