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

Répondre à