In my kernel, I used the following line to calculate the offset of an array inside of a Task-State-Segment:
const TSS_IO_BITMAP_OFFSET as ushort = cushort(@(cast(task_state_segment ptr, 0)->io_bitmap(0)))
This worked nicely in version 0.24.0, but on 0.90.1 this produces an error. I was able to shrink down the problem to two simple lines of code:
dim x as ushort
This produces the following error:
error 20: Type mismatch, before ')' in 'cushort(@x)'
Using a cuint() or cint() works just fine, casting to any other type (byte, ubyte, short, ushort, longint, ulongint) fails. Working around this is possible by first casting to an (u)integer:
Maybe this is wanted to prevent people from doing crazy stuff with pointers but I wanted to report it because it also could be unwanted behavior.