Раннее GNU Smalltalk распространялся под двойной лицензией: ВМ и среда разработки под GPL, а системная библиотека классов под LGPL.
Это не имело никакого значения при разработке на GST для внутреннего использования, но возникали различные ньюансы при распространении программы разработанной с использование GST. Так, согласно GPL, любые изменения в ВМ должны были так же распространятся под GPL. Это условие распространялось и на байдинги к различным внешним библиотекам. То есть байдинги к сокетам, Gtk+ и пр. так же распространяются под GPL. Как результат, любая программа на ST, использующая эти самые GPL-ные байдинги, попадает под действие GPL и сама должна была распространятся под GPL даже если сама библиотека распространяется под более либеральной лицензией (например, BSD).
Начиная с версии 2.3 (которая должна выйти в ближайшее время) FSF согласилась добавить поправку к GPL лицензии для GST. Согласно этой поправке, при комбинировании программы на GST со сторонними программами или библиотеками, лицензия GPL не будет распространятся на эту программу. Сторонние библиотеки должны быть лицензионно совместимы с GPL (иметь открытый исходный код). Поправка к GPL распространяется только на ST-программу и не распространяется на библиотеки лицензированные под GPL. То есть, при использовании сторонней библиотеки под GPL (например, GNU readline) ST-код всё равно должен распространятся под GPL.
Это _моё_ _частное_ понимание сложившейся ситуации. Если кто-то может подтвердить/опровергнуть это понимание или прояснить эту лицензионную эквилибристику, то буду очень благодарен.
Введение этой поправки для GST было согласовано с Ричардом Столманом.
Ярлыки: gst
Теперь, наряду с seasidehosting - свободным хостингом - доступен Parasol - коммерческий хостинг для seaside-приложений. Parasol позволяет задать любое имя для сайта (в противовес именам домена seasidehosting.st), а так же позволяет создавать гибридные сайты - сайты, где seaside-приложение это всего-лишь часть (большая или меньшая).
Ярлыки: seaside
Господа разработчики, если у вас есть ST - код, который может быть полезен другим, то следуйте хорошему примеру - выкладывайте такой код.
После того, как под открытой лицензией был выпущен Strongtalk с новой силой зазвучали мысли захостить на ST VM другие динамические языки, и в частности - Ruby.
Причин начать именно с Ruby может быть несколько. Это и желание ускорить Ruby, что позволит переписать ряд библиотек с C на сам Ruby, так и желание расширить аудиторию знакомую со Smalltalk (например, около 50% Portland Smalltalk user group - выходцы из Ruby).
Задачу должно упрощать то, что Ruby был частично смоделирован со Smalltalk. Хотя предыдущие попытки (проект Peter Suk для Ruby или проект pycore - исполнение байткодов Python на VW) благополучно заглохли.
Следующий "подход к снаряду" попробует сделать Avi Bryant. Уверенности, что у него что-то может получится, прибавляет то, что он вырастил не один успешный проект. Кстати, сам Avi так же пришел к ST из Ruby.
Avi предлагает не писать компилятор с Ruby прямо в байт-код ST VM (какой именно ВМ?), а транслировать Ruby код в ST. Для поддержки проекта создан список рассылки - smalltalk-ruby. Идея вызвала некоторое оживление, так что можно надеятся, что скоро появятся первые результаты.
Для "полноты ощущений" можно еще добавить, что примером успешной трансляции из одного языка в другой может служить ST2JS - транслятор из ST в ... JavaScript. В блоге автора пакета приведены как примеры кода, так и скриншоты различных инструментов разработчика.
VA Smalltalk 7.0.1 is now available for download.
This is a maintenance release that rolls up all bug fixes for the last year.
It does not include any of the enhancements developed for our upcoming 7.5 release (still planned for the end of the year).
The list of fixes from the readme includes:
- 2493 - Swapper mutation of AbtTimestamp fails
- 3834 - Broken link to ResHacker in Smalltalk User's Guide
- 3885 - AbtTimedWait is not threaded on Windows
- 4702 - AbtTimestamp wrong for dates earlier that 1901-01-01
- 6168 - User's Guide "Replacing required map" and "Exporting Components" missing punctuation
- 6204 - Heterogeneous Details View Colummn
- 6622 - Missing documentation for 64-bit integer support
- 6851 - Intermittent slowdown under heavy load on Unix
- 7156 - solaris includes extra .so files
- 7400 - Database Guide is incorrect for Multi Row Query Example
- 7769 - AbtPortableNotebookPageView broken for some users by V6.0.3
- 8225 - IndexOutOfRange in WkTableWidget due to item deletion
- 8226 - WkHierarchical listbox icons have gray background
- 8343 - Sorting makes TableWidget items out of synch
- 9392 - Scaling a transparent GIF causes it to lose transparency
- 14316 - AbtComboBox gives walkback when maxlength is set on Unix
- 14317 - AbtMQqm>>#terminate - dictionary concurrency problem - not thread-safe
- 14608 - Embedded Shell menubar item translateCoords wrong
- 14609 - Integer>>#even method has poor performance
- 14610 - HY024 returned on multi-row ODBC operations with DB2
- 14611 - Block>>#critical should be categorized as API
- 14612 - FromDLL test in CgIconTests fails on Windows
- 14613 - Multiple examples fail due to bitmapPath being an array
- 14615 - Integer>>#bitAt:put: wrong
- 14616 - SciSocketManager>>#getHostName passes bad parameter
- 14617 - Error in implementation of AcoResourceManager active setting
- 14618 - UNIXProcesses class>>#setUpApplication has redundant toBeLoadedCode
- 14619 - Invalid characters in SCI trace filename
- 14620 - Support more than 2GB RAM on Windows
- 14621 - Inspector has focus on 'Bind to self' checkbox, not items in the list
- 14622 - Improve SCI trace output
- 15002 - Remove obsolete OS400 subapplications
Mondrian, движок визуализации информации разработанный под VW, сейчас портируют на Squeak. Код можно найти в MC-репозитории на http://mc.lukas-renggli.ch.
На скриншоте можно видеть визуализацию иерархии классов от класса ParseNode. Ширина прямоугольников отображает количество переменных объекта, высота - количество методов. Пример сгенерирован командами:
MOPaintings classInheritanceOf: ParseNode. MOPaintings systemComplexityOf: ParseNode
Ярлыки: squeak