I finally finished the reorganization of sysdep code I started last weekend:
1) last weekend I separated the sysdep code into various pieces in the sysdep/ directory, organized by "topic" and OS, and duplicated events.c (previously considered non-system-dependent, but actually relying heavily on POSIX features) into sysdep/posix/events.c and sysdep/win32/events.c. 2) now I rewrote sysdep/win32/events.c to use native Win32 APIs; so I was also able to figure out the common parts, and move them back to libgst/events.c. The Win32 code is still not very commented and not very readable; the approach is totally different from POSIX because it signals Smalltalk semaphores from a separate thread rather than from signal handlers. In the future, however, this may turn out to be the way to go even for POSIX (via libevent)! While I wrote the code independently, after the fact I noticed that putty uses the same approach. This cannot be bad. 3) at the same time, sockets became a bit more intertwined with the event handling machinery, so I moved socket code into the main DLL. You will still have to load the Sockets.star package (it's just the C module that is no more). The good news are threefolded. First, the POSIX code sees just functions moving around; the actually code is basically untouched. This is good for stability. Second, some very ugly code for Win32 (the emulation of poll, and signalx.*) goes away: the net effect is like -600 lines of code. Third, despite extremely light testing, it is less buggy than before---at least "Sockets.Socket microTest" works. Besides including VisualGST, I think we're now feature-complete for 3.2. Paolo _______________________________________________ help-smalltalk mailing list [hidden email] http://lists.gnu.org/mailman/listinfo/help-smalltalk |
Great job!
2009/8/26, Paolo Bonzini <[hidden email]>: > I finally finished the reorganization of sysdep code I started last weekend: > > 1) last weekend I separated the sysdep code into various pieces in the > sysdep/ directory, organized by "topic" and OS, and duplicated events.c > (previously considered non-system-dependent, but actually relying > heavily on POSIX features) into sysdep/posix/events.c and > sysdep/win32/events.c. > > 2) now I rewrote sysdep/win32/events.c to use native Win32 APIs; so I > was also able to figure out the common parts, and move them back to > libgst/events.c. > > The Win32 code is still not very commented and not very readable; the > approach is totally different from POSIX because it signals Smalltalk > semaphores from a separate thread rather than from signal handlers. In > the future, however, this may turn out to be the way to go even for > POSIX (via libevent)! > > While I wrote the code independently, after the fact I noticed that > putty uses the same approach. This cannot be bad. > > 3) at the same time, sockets became a bit more intertwined with the > event handling machinery, so I moved socket code into the main DLL. You > will still have to load the Sockets.star package (it's just the C module > that is no more). > > The good news are threefolded. First, the POSIX code sees just > functions moving around; the actually code is basically untouched. This > is good for stability. Second, some very ugly code for Win32 (the > emulation of poll, and signalx.*) goes away: the net effect is like -600 > lines of code. Third, despite extremely light testing, it is less buggy > than before---at least "Sockets.Socket microTest" works. > > Besides including VisualGST, I think we're now feature-complete for 3.2. > > Paolo > > > _______________________________________________ > help-smalltalk mailing list > [hidden email] > http://lists.gnu.org/mailman/listinfo/help-smalltalk > _______________________________________________ help-smalltalk mailing list [hidden email] http://lists.gnu.org/mailman/listinfo/help-smalltalk |
Free forum by Nabble | Edit this page |