Skip to content

Neat 0.2.0: "We live in a society / Bottom type." --Donald Knuth

Compare
Choose a tag to compare
@FeepingCreature FeepingCreature released this 17 Nov 05:29
· 440 commits to master since this release

Oh yeah, I make releases. I forgot.

  • Tuple field names are now part of the type.
    • A tuple implconvs to another by the rule that fields without names convert to fields with names. Fields with conflicting names do not implconv.
    • Tuple literals can specify names as (a=2, b=3).
    • A tuple implconving to another where only names are changed is called a "trivial conversion", ie. a conversion with no effect on the stored data.
    • If T trivially converts to U, then T[] implicitly converts to U[].
  • Support template shortcut syntax: keyword name(T) => template name(T) { keyword name {} }.
  • Implement nontrivial IFTI.
    • Function template calls can now infer template parameters even with indirect relations, such as (T)(T[] array).
  • Array index access is now bounds checked.
  • Support class method overloading.
  • Add bottom type.
    • bottom is a type that contains no values. The D equivalent is called noreturn.
    • break, continue and return are expressions of type bottom. This enables .case(foo: break) and the like.

And many fixes, the most important one maybe being that-j should now work reliably.

I also want to direct special attention at the GTK demo, which uses macros to make the GTK object system pretend to be Neat classes.