Today I committed support for GC to GNUstep / clang. I wrote it largely for marketing checklist compliance, but then I ran Gorm with it and found:
- No code changes to -gui were required - No code changes to Gorm were required - The memory usage dropped by about 5-10% It's still pretty experimental at the moment, but it should become generally useable in the near future. I plan on adding support to LanguageKit for emitting the required read / write barriers, so we will at least support GC mode in Smalltalk code. I was expecting GC to mean that we used more memory and stuff became slower. It doesn't seem to. From my preliminary tests, the overhead of GC is pretty much offset by the removal of -retain/release/autorelease message sends and (more importantly) -dealloc methods (most objects don't do anything in -finalize, while -dealloc methods typically involve lots of -release messages). Given that it doesn't seem to cost much, is there any point in not using it? Once it's a bit more stable, should we consider requiring GC for Étoilé? It simplifies development (which is something I am always in favour of) and should make it easier for novice programmers to become involved with the project, since they don't have to think about any of this stuff. And I don't have to think about memory management, which is good because thinking is hard! Note: I'm not recommending switching immediately, because I only started working on GC on Sunday, so I definitely wouldn't call it production ready yet, but it is working well enough for Gorm to work (blocks also work really nicely with GC), but it's something to work towards (making sure all of the Étoilé frameworks work in GC mode, and so on. David -- Sent from my Apple II _______________________________________________ Etoile-discuss mailing list [email protected] https://mail.gna.org/listinfo/etoile-discuss
