Hi all,
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
-- vyzo