phasm/TODO.md
Johan B.W. de Vries 7544055a94 Split Num into NatNum and IntNum
This is because Haskell defines negate, abs and signum
for Num, but they don't work with our unsigned number
types. (abs would be a noop.) Haskell has Word32 / Word64,
but there negate doesn't make much sense to me.

Implemented neg and abs.

Implemented a type class inheritance check.

Removed Integral from u8 and i8 since it wasn't implemented.
2025-04-06 16:12:36 +02:00

1.6 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?

  • 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_FLOAT_OPS and WEBASSEMBLY_BUILTIN_BYTES_OPS are special cased

    • Should be part of a prelude
  • Casting is not implemented except u32 which is special cased

  • Parser is putting stuff in ModuleDataBlock

    • Compiler should probably do that
  • ourlang.BinaryOp should probably always be a Type3ClassMethod

    • Remove U32_OPERATOR_MAP / U64_OPERATOR_MAP
  • Make prelude more an actual thing

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