Hey folks,
The latest changesets resolved some bugs and implemented several features that may be useful:
- Automatic extension inference now works
- Explicit casting now works
- Typed literals now work, with a slightly different syntax from what was in the documentation before
- The ** and // operators now work (pow and floordiv)
The documentation has been updated to reflect this as well.
To enable these changes and some other upcoming ones, I refactored the type system to be extensible. You can define your own "virtual" types that specify how to determine the type of, and generate code for, AST nodes which involve operations on those types (currently function calls, attribute access, subscript access, unary operators and binary operators; soon to be added are assignment, and the ability to specify how an object with a virtual type in Python is passed into OpenCL functions.) These features are not yet documented but just thought I'd toss out a preview of where I'm going with this from a theoretical perspective in the short term. This essentially allows you to create macros in the LISP sense of the word (though full hygienic macros might require a little bit more effort; and its not a list of course but a tree.)
Finally, I will be revising the documentation and creating new slides for another tutorial I'm giving, though that will focus on basic GPU computing more so than cl.oquence. I'll post/update when thats available.
There are 26 remaining issues on the tracker before I'm comfortable with a beta 1.0 release of ahh (of which about half are cl.oquence issues), so I'm hoping for a public beta release before the end of the summer. If anyone has ideas for how to publicize, that'd be great.
viva le hedgehog,
cyrus