[Haskell] ANNOUNCE: jhc 0.7.4

Announcing jhc 0.7.4! There have been a few major changes, the main one being that there is now support for a garbage collector. This drastically increases the number of programs which are feasable to compile with jhc. http://repetae.net/computer/jhc/ Any testing people can do with -fjgc would be greatly appreciated! My gameplan is to fix any issues that come up with the new gc and release a 0.7.5 that will have the GC enabled by default. This will probably be the first version of jhc I can recommend to non-developers with a good concience :). Once that is done I can implement a good strategy for library compatibility with other compilers and the standards. As it is, jhc has a mix of haskell 98 and haskell 2010 and the ghc base as its distributed libraries, basically whatever I found I needed in practice I added as I went along. This won't work in the long run. Major changes * a garbage colletor which can be enabled with '-fjgc' is available. after some more testing, I will make it the default in the 0.7.5 release. * A new memory allocator based on Jeff Bonwick's slab memory allocator for kernels. This means that in many cases, memory can be pulled off a slab and immediately used with no initialization, in addition, it allowed a rearrangement of the GC meta-data to optimizally use the cache. * packed representation of algebraic types, 'Maybe Foo' is actually represented in memory as a NULL pointer or just a 'Foo' with no tag bits. Combined with the slab allocator, this can double the number of some common values that can be put in a cache line. * some intense profiling of generated code and modification of the rts and code generator. Signifigant speed-ups in compiled programs are the result. Some other changes since 0.7.3 are * documentation updates, especially when it comes to the runtime. * ghc 6.12 support (it is in fact required now.) * no more monolithic 'Main'. the core pass moved to E.Main and the grin pass moved to Grin.Main. * generated C code is more compact and easier to debug. * more use of bytestring internally, improved performance * JHC_RTS_INCLUDE flag allows including the rts from an external file. useful for debugging/developing the RTS. * explicit register support in grin, for alternate back ends such as a NCG * Removed all compiler magic dealing with Eq,Bounded,Ord, and Bits. instances for these are specified in haskell code even for built in types now. * cleaned out some obsolete flags and options on command line. * updated applicative and support for newest version of 'containers' library. * bug updates * various bug fixes Below is the announcment for 0.7.3 in case you missed it. It's been a long time coming, but jhc-0.7.3 is here. If you have been following the darcs repository, there are not a whole lot of new changes, but there have been substantial fixes since 0.7.2. http://repetae.net/computer/jhc/ One of the most important ones is I have begun the process of standardizing on YAML for all external interfaces that may be useful to automation, this should make interfacing jhc with external tools written in any language much easier, and it will prevent me from spending time trying to invent proprietary formats every time I think of something new to spit out. right now it is used in 3 places: - dumping dependency info with --deps - library dumping with --list-libraries -v - annotating source code, for inputting to documentation generators via --annotate-source The main place it isn't used yet that I desire too is to replace the 'cabal' library description format with a true YAML file. jhc cabal files were never quite compatible with cabal ones anyway and naming them the same thing has been a source of connfusion. some of the other changes have been: features: - a lot more regression tests, many user submitted bugs are now regressions - support for using 'mock' to build rpms - System.Exit, System.Cmd added to base - better compatibility with ghc in some library functions - ui improvements in showing progress and errors - extended --list-libraries info - --deps dependency dumping - more francise compatible thanks to patches from droundy - more instances for bigger tuples added - uses editline if readline not available - select libraries by hash as well as version - add System.IO.Pipe - detect version of gcc needed for cross compiling to windows performance: - storage analysis - a very basic region inference enabled by default - deadcode analysis can see through partial applications now - profiled and sped up some library routines that were producing inellegant core. - figure out when top level grin functions call themselves recursively and turn them into explicit loops. bug fixes: - do expression in infix - fix strict newtype bug - U2U bug fixed - desugaring inside of list comprehensions fix - c generator doesn't mess up on unknown values - the compiler version is stored in the cache files, so multiple versions of jhc don't clobber each others cache entries - Ord instance for lists fixed - recursive type synonyms detected properly - make sure errno.h is included when errno is referenced - don't give a parse error when seeing ghc extensions to INLINE - qualified method names fix -- John Meacham - ⑆repetae.net⑆john⑈ - http://notanumber.net/