Hi all,-- vyzo
Another week, another hacking spree and the gerbil compiler now has
an optimizer.
Currently it optimizes opt-lambda/case-lambda dispatch and inlines all
struct operations for statically known structs, including struct
direct constructor dispatch. All optimizations are applied across
module boundaries.
For sources and downloads:
https://github.com/vyzo/gerbil
https://github.com/vyzo/gerbil/releases
Detailed changes since Gerbil v0.6:
- compiler: modularize and implement optimizer pass
- optimizations:
- lift opt lambdas and case-lambdas and optimize direct call dispatch
- recognize struct MOP definitions and inline direct struct operations
- cross module optimization with concurrent compilation and ssxi module generation
- ssxi prelude for writing type declarations for the optimizer
- gxc:
- add -O and -no-ssxi options for optimization
- add -cc-options and -ld-options for gsc compilation flags
- add -h option for printing usage
- runtime:
- new MOP functions: class-subtype? next-method call-next-method
- stdlib
- std/text/zlib
- support transparent gzip/deflate decompression
- support gz compression
- support compression and decompression of input ports
- std/net/request
- accept gzip/deflate encoding with transparent content decompression
- std/iter
- accept when and unless filters in for and it's variants
- optimize iter transforms to use a direct iterator instead of a coroutine
- make coroutine and input-port iter-value idempotent between iter-next calls
- std/srfi/9
- generate record constructor that is recognized by the optimizer
- use interned symbols for module scoped records, as in defstruct
- std/misc/queue and std/test
- fix accessor bugs caught by the optimizer