phasm/TODO.md
Johan B.W. de Vries 20c507a9ec Adds the Bits type class
Also adds the remaining unexposed WebAssembly opcodes as
comments (eqz, clz, ctz, popcnt, copysign).

This also means that BinaryOp.operator is now always
a type class method.
2025-04-09 15:40:20 +02:00

1.8 KiB

TODO

  • Decide between lineair types / uniqueness vs garbage collector

  • Rename constant to literal

  • Implement a trace() builtin for debugging

  • Check if we can use DataView in the Javascript examples, e.g. with setUint32

  • Storing u8 in memory still claims 32 bits (since that's what you need in local variables). However, using load8_u / loadu_s we can optimize this.

  • Implement a FizzBuzz example

  • Also, check the codes for FIXME and TODO

  • Allocation is done using pointers for members, is this desired?

  • Functions don't seem to be a thing on typing level yet?

  • static_array and tuple should probably not be PrimitiveType3, but instead subclass AppliedType3?

  • See if we want to replace Fractional with Real, and add Rational, Irrationl, Algebraic, Transendental

  • test_bitwise_or_inv_type

  • test_bytes_index_out_of_bounds vs static trap(?)

  • test_num.py is probably best as part of the generator?

  • Find pytest.mark.skip

  • There's a weird resolve_as reference in calculate_alloc_size

    • Either there should be more of them or less
    • At first glance, looks like failure in the typing system
    • Related to the FIXME in phasm_type3?
  • WEBASSEMBLY_BUILTIN_BYTES_OPS is special cased

    • Should be part of a prelude (?)
    • In Haskell this is not a type class
  • Casting is not implemented except u32 which is special cased

  • Parser is putting stuff in ModuleDataBlock

    • Compiler should probably do that
  • Make prelude more an actual thing

  • Implemented Bounded: https://hackage.haskell.org/package/base-4.21.0.0/docs/Prelude.html#t:Bounded

  • Try to implement the min and max functions using select

  • Filter out methods that aren't used; other the other way around (easier?) only add __ methods when needed