<?xml version='1.0' encoding='windows-1251'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss'><id>tag:blogger.com,1999:blog-7589481</id><updated>2010-03-11T17:12:58.491+02:00</updated><title type='text'>Smalltalk по-русски</title><subtitle type='html'></subtitle><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7589481/posts/default'/><link rel='alternate' type='text/html' href='http://www.smalltalk.ru/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><link rel='next' type='application/atom+xml' href='http://www.blogger.com/feeds/7589481/posts/default?start-index=26&amp;max-results=25'/><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://www.smalltalk.ru/feed/atom.xml'/><author><name>Uladzimir Liashkevich</name><email>noreply@blogger.com</email></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>219</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-7589481.post-65326284433029843</id><published>2008-10-08T14:13:00.005+03:00</published><updated>2008-10-08T14:46:03.286+03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='squeak'/><title type='text'>[Squeak] Squeak "multi-vm"</title><content type='html'>&lt;p&gt;&lt;a href="http://domino.research.ibm.com/comm/research_people.nsf/pages/ssadams.index.html"&gt;Сэм Адамс (Sam S. Adams) из IBM Research&lt;/a&gt; и &lt;a href="http://en.wikipedia.org/wiki/David_Ungar"&gt;Дэвид Унгар* (David Ungar)&lt;/a&gt; собираются на &lt;a href="http://news.squeak.org/2008/10/07/squeak-bof-at-oopsla-2008/"&gt;Squeak BOF at OOPSLA 2008&lt;/a&gt; представить разработанную в рамках "&lt;a href="http://domino.watson.ibm.com/comm/research.nsf/pages/r.plansoft.seminars.html"&gt;Renaissance Project&lt;/a&gt;" ВМ "&lt;a href="http://wiki.squeak.org/squeak/1107"&gt;multi-vm&lt;/a&gt;" - ВМ Squeak способную работать на 56 из 64 ядер процессора &lt;a href="http://www.tilera.com/products/TILE64.php"&gt;Tilera64&lt;/a&gt;. Другие подробности пока не известны, так что почему именно 56 ядер пока не ясно (часть ядер вероятно занята системными функциями, типа планировщика или сборки мусора).
&lt;/p&gt;

&lt;p&gt;* - в инете можно найти разные транскрипции фамилии Ungar: "&lt;a href="http://ru.wikipedia.org/wiki/%D0%90%D0%BD%D0%B3%D0%B5%D1%80,_%D0%A1%D1%82%D1%8E"&gt;Ангер&lt;/a&gt;", "&lt;a href="http://www.film.ru/afisha/person.asp?name=%C3%FD%F0%E8+%D3%ED%E3%E0%F0"&gt;Унгар&lt;/a&gt;". Мне более уместным кажется "Унгар", но как правильно я не уверен.&lt;/p&gt;

&lt;p align="right"&gt;&lt;i&gt;Из блога "&lt;a href="http://astares.blogspot.com/2008/10/squeak-multi-vm.html"&gt;The Hitchhiker's Guide to ...&lt;/a&gt;".
&lt;/i&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7589481-65326284433029843?l=www.smalltalk.ru' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.blogger.com/feeds/7589481/65326284433029843/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=7589481&amp;postID=65326284433029843' title='Комментарии: 1'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7589481/posts/default/65326284433029843'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7589481/posts/default/65326284433029843'/><link rel='alternate' type='text/html' href='http://www.smalltalk.ru/2008/10/squeak-squeak-multi-vm.html' title='[Squeak] Squeak &quot;multi-vm&quot;'/><author><name>Andrei N.Sobchuck</name><uri>http://www.blogger.com/profile/06558669450434857988</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='16238507229338627901'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7589481.post-597062269701831573</id><published>2008-10-06T15:30:00.006+03:00</published><updated>2008-10-06T15:55:10.902+03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='squeak'/><title type='text'>[Squeak] Sophie переходит на Java</title><content type='html'>&lt;p&gt;&lt;a href="http://www.sophieproject.org/"&gt;Sophie &lt;/a&gt;- это проект по разработке нового вида электронных книг, использующих мультимедиа возможности современных компьютеров. Совершенно недавно разработка достигла версии 1.0. Версия 2.0 &lt;a href="http://lists.gforge.inria.fr/pipermail/pharo-project/2008-September/001840.html"&gt;будет полностью написана с нуля на Java&lt;/a&gt;. Подрядчиком стала болгарская фирма &lt;a href="http://asteasolutions.com/"&gt;Astea Solutions&lt;/a&gt;.
&lt;/p&gt;

&lt;p&gt;Проект финансируется &lt;a href="http://www.mellon.org/"&gt;The Andrew W. Mellon Foundation&lt;/a&gt; и &lt;a href="http://ask.slashdot.org/comments.pl?sid=984735&amp;cid=25252253"&gt;основной причиной смены технологии со Squeak на Java стала невозможность организовать сообщество разработчиков вокруг Sophie&lt;/a&gt;. Так как очень мало людей знающих и желающих работать со Smalltalk. И в Фонде Мелона ожидают, что майнстримовый язык программирования поможет образованию сообщества.&lt;/p&gt;

&lt;p&gt;Ожидается, что &lt;a href="http://asteasolutions.net/official/Our_Projects.html"&gt;Sophie 2&lt;/a&gt; сможет понимать формат Sophie 1. Текущий интерфейс будет взят за основу и текущий функционал будет не переделан, а дополнен и расширен. Исходники же Sophie 1 открыты и доступны на сайте &lt;a href="http://opensophie.org/"&gt;opensophie.org&lt;/a&gt;. И возможно проект на Squeak получит некое продолжение.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7589481-597062269701831573?l=www.smalltalk.ru' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.blogger.com/feeds/7589481/597062269701831573/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=7589481&amp;postID=597062269701831573' title='Комментарии: 2'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7589481/posts/default/597062269701831573'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7589481/posts/default/597062269701831573'/><link rel='alternate' type='text/html' href='http://www.smalltalk.ru/2008/10/squeak-sophie-java.html' title='[Squeak] Sophie переходит на Java'/><author><name>Andrei N.Sobchuck</name><uri>http://www.blogger.com/profile/06558669450434857988</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='16238507229338627901'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7589481.post-4175516519051071631</id><published>2008-09-26T11:54:00.005+03:00</published><updated>2008-09-26T13:33:16.452+03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='dolphin'/><category scheme='http://www.blogger.com/atom/ns#' term='new version'/><title type='text'>[Dolphin] Дельфин - жил, Дельфин - жив, Дельфин - будет жить???</title><content type='html'>&lt;p&gt;Многие вероятно успели пустить слезу по &lt;a href="http://www.smalltalk.ru/2008/01/dolphin-61.html"&gt;потерявшему перспективу Dolphin&lt;/a&gt;. Однако ситуация развивается. Старый, заслуживший любовь многих Dolphin таки - "всё" окончательно и бесповоротно, однако, &lt;a title="Анонс новости о выходе нового диалекта Dolphin" href="http://www.object-arts.com/content/news/excitingNews.html"&gt;он послужит удобрением для нового улучшенного Dolphin - Dolphin Next Generation&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Разработкой Dolphin Next Generation (DNG) займётся Lesser Software. Lesser software - разработчики &lt;a href="http://www.lesser-software.com/en/flavours/frames/default.htm"&gt;LSW Vision Smalltalk (LSWVST)&lt;/a&gt;, диалекта &lt;a href="http://ru.smalltalk.wikia.com/wiki/Visual_Smalltalk_Enterprise"&gt;Visual Smalltalk Enterprise (VSE)&lt;/a&gt;. Lesser Software уже была засветилась &lt;a href="/news-03-01.html"&gt;в наших новостях в 2003&lt;/a&gt;. Примерно тогда же они собирались выпустить общедоступный вариант своего диалекта ST для .Net, но, очевидно, до коммерческого уровня довести его не смогли. Результат с DNG похоже будет положительный, так как &lt;a href="http://www.object-arts.com/content/navigation/products/dng.html"&gt;многие части от Dolphin X6 уже запускаются на ВМ от LSWVST - Vision VM&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Новый диалект будет совместим по байткодам с VSE (из-за Vision VM). С Dolphin X6 будет совместимость на уровне исходных кодов. В продукт будет входить вся библиотека классов от Dolphin X6, включая &lt;a href="http://www.smalltalk.ru/articles/model-view-presenter.html"&gt;MVP&lt;/a&gt;. Бонус Vision VM: JIT, многонитевость ВМ, поддержка 64 бит ОС.&lt;/p&gt;

&lt;p&gt;Среди примеров применения как Dolphin так и VSE на территории ex-СССР есть &lt;a href="http://www.tvcom.ru/"&gt;ОАО ТелеNET, г.Тверь, Россия&lt;/a&gt; с биллингом на Dolphin Smalltalk, &lt;a href="http://www.objectland.ru/"&gt;ЗАО Радом-Т, г. Таганрог, Россия&lt;/a&gt; с ГИС ObjectLand на Visual Smalltalk Enterprise.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7589481-4175516519051071631?l=www.smalltalk.ru' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.blogger.com/feeds/7589481/4175516519051071631/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=7589481&amp;postID=4175516519051071631' title='Комментарии: 3'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7589481/posts/default/4175516519051071631'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7589481/posts/default/4175516519051071631'/><link rel='alternate' type='text/html' href='http://www.smalltalk.ru/2008/09/dolphin.html' title='[Dolphin] Дельфин - жил, Дельфин - жив, Дельфин - будет жить???'/><author><name>Andrei N.Sobchuck</name><uri>http://www.blogger.com/profile/06558669450434857988</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='16238507229338627901'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7589481.post-419378807971877491</id><published>2008-09-24T22:08:00.012+03:00</published><updated>2008-09-26T11:53:45.238+03:00</updated><title type='text'>Pier 1.0.17 - CMS на Seaside. Людьми и для людей</title><content type='html'>&lt;p&gt;Вышла &lt;a title="Анонс Pier 1.0.17" href="http://lists.squeakfoundation.org/pipermail/squeak-dev/2008-September/131633.html"&gt;новая версия Pier&lt;/a&gt; - CMS на Seaside. Pier является второй версией &lt;a href="http://smallwiki.unibe.ch/smallwiki"&gt;SmallWiki&lt;/a&gt;. Лицензия - MIT.&lt;/p&gt;

&lt;p&gt;&lt;a href="http://www.piercms.com/doc/examples"&gt;Примеры сайтов где используется Pier&lt;/a&gt; можно найти на &lt;a title="Домашний сайт Pier" href="http://www.piercms.com"&gt;домашнем сайте&lt;/a&gt;, естественно управляемом самой Pier. "Естественно" - потому, что принцип использования собственных технологий широко распространён в сообществе ST.&lt;/p&gt;

&lt;p&gt;Из примеров: сообщество разработчиков Squeak долгое время обслуживалось &lt;a href="http://en.wikipedia.org/wiki/Swiki"&gt;Swiki&lt;/a&gt;. Сейчас &lt;a href="http://www.squeak.org/"&gt;squeak.org&lt;/a&gt; работает на SmallWiki, однако куча информации для разработчиков можно найти только на различных &lt;a href="http://wiki.squeak.org/squeak"&gt;swiki&lt;/a&gt;. Репозитории проектов для Squeak - &lt;a href="http://www.squeaksource.com"&gt;SqueakSource&lt;/a&gt; работают на Squeak/Seaside.
&lt;/p&gt;

&lt;p&gt;&lt;a href="http://live.exept.de/"&gt;Документация по Smalltalk/X&lt;/a&gt; хостится на ST/X.&lt;/p&gt;

&lt;p&gt;Сообщество VisualWorks долгое время поддерживается &lt;a href="http://www.cincomsmalltalk.com/CincomSmalltalkWiki"&gt;wiki на  VisualWorks&lt;/a&gt;. &lt;a href="http://www.cincomsmalltalk.com/userblogs"&gt;Блоги по VW&lt;/a&gt; - написаны на VW продакт менеджером(!).&lt;/p&gt;

&lt;p&gt;Такая ситуация во многом возникла благодаря традиции не опускать руки при отсутствии каких-то инструментов, а создавать их самому. И эти созданные для себя инструменты зачастую двигали сообщество вперёд. Например, когда Ави Браянту понадобился инструментарий для быстрой разработки web-приложений он разработал &lt;a title="История Seaside" href="http://www.seaside.st/about/history"&gt;Seaside&lt;/a&gt;, понадобилась система контроля версий - он создал &lt;a href="http://www.wiresong.ca/Monticello/"&gt;Monticello&lt;/a&gt;. Менее известный пример - это &lt;a href="http://www.cincomsmalltalk.com/BottomFeeder/"&gt;RSS агрегатор BottomFeeder&lt;/a&gt;, разработанный Джеймсом Робертсоном, продакт менеджером Cincom Smalltalk. Разрабатывать BottomFeeder Джеймс начал только для того, чтобы понять стоил ли только возникший тогда RSS какого либо внимания. Значительно продвинул всю индустрию программирования &lt;a href="http://st-www.cs.uiuc.edu/users/brant/Refactory/"&gt;RefactoringBrowser&lt;/a&gt; разработанный Кентом Беком. Да и сам Smalltalk появился во многом потому, что Алану Кею нужен был инструмент для обучения детей. А отсутствие удобного средства разработки после ухода из Xerox привело Алана к созданию &lt;a href="http://users.ipa.net/~dwighth/squeak/oopsla_squeak.html"&gt;Squeak&lt;/a&gt;. В свете этого мне кажется логичным, что wiki, как таковое, придумал именно &lt;a title="Кто такой Ward Cunningham" href="http://en.wikipedia.org/wiki/Ward_Cunningham"&gt;smalltalk-ер&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Ваши примеры?&lt;/p&gt;

&lt;p&gt;&lt;i&gt;PS. Pier 1.0.17 работает на &lt;a href="http://www.smalltalk.ru/2007/05/gemstone-gemstone.html"&gt;GLASS&lt;/a&gt; и будет поставлятся &lt;a href="http://gemstonesoup.wordpress.com/2008/09/25/pier-on-glass/"&gt;вместе с GemStone/S 64 version 2.3&lt;/a&gt;.&lt;/i&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7589481-419378807971877491?l=www.smalltalk.ru' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.blogger.com/feeds/7589481/419378807971877491/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=7589481&amp;postID=419378807971877491' title='Комментарии: 1'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7589481/posts/default/419378807971877491'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7589481/posts/default/419378807971877491'/><link rel='alternate' type='text/html' href='http://www.smalltalk.ru/2008/09/pier-1017-cms-seaside.html' title='Pier 1.0.17 - CMS на Seaside. Людьми и для людей'/><author><name>Andrei N.Sobchuck</name><uri>http://www.blogger.com/profile/06558669450434857988</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='16238507229338627901'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7589481.post-3390682313549587427</id><published>2008-09-21T14:50:00.009+03:00</published><updated>2008-09-25T16:21:31.064+03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='inside_st'/><title type='text'>Smalltalk и Все-Все-Все: Белка-Рыба наносит ответный удар</title><content type='html'>&lt;center&gt;&lt;img alt='Лого движка SquirrelFish' src='/images/squirrelfish.png' /&gt;&lt;/center&gt;

&lt;p&gt;Не успел я запостить &lt;a href="/2008/09/smalltalk.html"&gt;статью об оптимизациях как в ST так и современных JavaScript-движках&lt;/a&gt;, как появилось дополнение: &lt;a href="http://www.opennet.ru/opennews/art.shtml?num=17997"&gt;Apple выпустила SquirrelFish Exterme&lt;/a&gt; (SFX). Если SF был просто хорошим интерпретатором, то SFX продвинулся далеко вперёд. &lt;/p&gt;

&lt;p&gt;И так, SFX использует:
&lt;ul&gt;
&lt;li&gt;Оптимизации в байткоде.&lt;/li&gt;
&lt;li&gt;PIC.&lt;/li&gt;
&lt;li&gt;JIT.&lt;/li&gt;
&lt;li&gt;JIT для регулярных выражений.&lt;/li&gt;
&lt;/ul&gt;
&lt;/p&gt;

&lt;p&gt;JIT для регулярных выражений нас сейчас не интересует. Просто JIT - это понятно (Кстати, JIT в SFX не использует &lt;a href="http://llvm.org/"&gt;LLVM&lt;/a&gt;, возможно по соображениям скорости кодогенерации).&lt;/p&gt;

&lt;p&gt;Что такое PIC мы уже рассмотрели. Хотя и тут есть один момент. В ST реализовать PIC относительно просто - ведь, не смотря на динамичность языка, существующие классы относительно стабильны и объекты принадлежат одному и тому же классу. В JS (и, тем более, в Self) же схема любого объекта может быть изменена на лету. Что равносильно в ST порождению новых классов. В V8 эту проблему решают введением скрытых классов на которые мапяться объекты с одинаковыми схемами. В SFX похоже используется аналогичная техника: каждый объект имеет некий &lt;a href="http://trac.webkit.org/browser/trunk/JavaScriptCore/kjs/StructureID.h"&gt;StructureID&lt;/a&gt;. Объекты имеющие одну и ту же схему имеют один и тот же &lt;i&gt;StructureID&lt;/i&gt;. Соответственно, диспетчер в PIC проверяет совпадение &lt;i&gt;StructureID&lt;/i&gt;.&lt;/p&gt;

&lt;p&gt;А вот оптимизации в байткоде мы еще не рассматривали. Эти оптимизации появились еще в оригинальном ST-80 (если не раньше, в ST-76) и призваны были соптимизировать диспетчеризацию сообщений наряду с глобальным кешем методов (что это - рассказано в предыдущей заметке). Эти оптимизации включают в себя "&lt;i&gt;специальные селекторы&lt;/i&gt;" и "&lt;i&gt;статические предсказания типов&lt;/i&gt;".&lt;/p&gt;

&lt;p&gt;&lt;i&gt;Спецселекторы&lt;/i&gt; это скорее не классическая оптимизация, а читерство. Суть оптимизации в инлайнинге базовых управляющих потоком выполнения структур (простите за косноязычее, но как сказать проще я не знаю).  Т.е. ряд посылок сообщений компилируется не в обычную посылку сообщения, а сразу в байткод. Пример в Squeak. Вызов любого метода, например "&lt;i&gt;true hash&lt;/i&gt;" компилируется в такой байткод:
&lt;pre&gt;
  pushConstant: true
  send: hash
&lt;/pre&gt;
А "&lt;i&gt;true ifTrue: [self hash]&lt;/i&gt;" компилируется в:
&lt;pre&gt;
  pushConstant: true
  jumpFalse: 22
  self
  send: hash
&lt;/pre&gt;
Т.е. при этом не создаётся блок и используется не реальная посылка сообщения, а генерируется некий спецбайткод. Это приводит к ряду эффектов. Первый - это ускорение. Второй - если выполнить код "&lt;i&gt;1 ifTrue: [self hash]&lt;/i&gt;", то вы получите не исключение "&lt;i&gt;MessageNotUnderstood&lt;/i&gt;", а "&lt;i&gt;NonBooleanReceiver&lt;/i&gt;". Третий эффект заключается в том, что если поменять имплементацию метода, например, в классе &lt;i&gt;True&lt;/i&gt;, то на поведении программы это не скажется. Так же бесполезно добавлять метод "&lt;i&gt;ifTrue:&lt;/i&gt;"  в другие классы - поскольку сообщение такое не посылается, то и вызвать такой метод без рефлексии в обычном случае не получится. И, напоследок, вызвать такой спецметод можно всё таки не только через рефлексию. Реальная посылка сообщения генерируется и если компилятор не может проинлайнить блок кода. Например, "&lt;i&gt;1 ifTrue: aBlock&lt;/i&gt;" генерирует:
&lt;pre&gt;
  pushConstant: true
  pushTemp: 0
  send: ifTrue:
&lt;/pre&gt;
Отсюда мораль: менять такие спецметоды не стоит, во избежание всяческих чудес в поведении программы. Набор спецселекторов обычно влючает в себя "&lt;i&gt;ifTrue:ifFalse&lt;/i&gt;", "&lt;i&gt;on:do:&lt;/i&gt;", "&lt;i&gt;timesRepeat:&lt;/i&gt;", "&lt;i&gt;whileTrue:&lt;/i&gt;". Подробнее о спецселекторах можно прочитать в &lt;a href="/articles/st-compiler.html"&gt;статье об устройстве компилятора в ST&lt;/a&gt; в разделе "Заинлайненный (почти) ifNil: (VW)".
&lt;/p&gt;

&lt;p&gt;
&lt;i&gt;Статические предсказания типов&lt;/i&gt; это уже именно оптимизация, а не грубый чит. Он основан на статистике, что большая доля сообщений таких как "&lt;i&gt;+&lt;/i&gt;" имеет одинаковые классы, как у получателя так и аргумента. Соответсвенно, реализация таких методов - это примитив, который проверяет тип аргумента. Выглядит в Squeak это так:
&lt;pre&gt;
SmallInteger&gt;&gt;+ aNumber 
  "Primitive. Add the receiver to the argument and answer with the result
  if it is a SmallInteger. Fail if the argument or the result is not a
  SmallInteger  Essential  No Lookup. See Object documentation  whatIsAPrimitive."

  &amp;lt;primitive: 1&amp;gt;
  ^ super + aNumber

Float&gt;&gt;+ aNumber 
  "Primitive. Answer the sum of the receiver and aNumber. Essential.
  Fail if the argument is not a Float. See Object documentation
  whatIsAPrimitive."

  &amp;lt;primitive: 41&amp;gt;
  ^ aNumber adaptToFloat: self andSend: #+
&lt;/pre&gt;

&lt;br /&gt;
&lt;i&gt;В ST традиционно, если примитив отрабатывает нормально, то возврата из него не происходит. Т.е. на ST код после примитива управление переходит только если примитив провалился.&lt;/i&gt;
&lt;br /&gt;

Соответсвенно примитив отрабатывает быстро, если предсказание типа было успешным и медленне, если нет. Пример из Squeak:
&lt;pre&gt;
Time millisecondsToRun: [10000000 timesRepeat: [1 + 1]]   "1)=&gt;  697"
Time millisecondsToRun: [10000000 timesRepeat: [5.0 + 1]] "2)=&gt; 2303"
Time millisecondsToRun: [10000000 timesRepeat: [1 + 5.0]] "3)=&gt; 2408"
&lt;/pre&gt;
С первым случаем всё понятно - предсказание типов успешное и код отрабатывает почти в 4 раза быстрее, чем во 2-м и 3-м случаях. А вот почему 2-й вариант быстрее 3-го? Во втором случае трасса такая:
&lt;pre&gt;
Float&gt;&gt;+
Number&gt;&gt;adaptToFloat:andSend:
Float&gt;&gt;+
&lt;/pre&gt;
В третьем же варианте, трасса больше на одну отправку сообщения:
&lt;pre&gt;
SmallInteger&gt;&gt;+ 
Integer&gt;&gt;+
Float&gt;&gt;adaptToInteger:andSend:
Float&gt;&gt;+
&lt;/pre&gt;
В VW реализация кардинально другая, но разница в скорости там еще более заметна:
&lt;pre&gt;
Time millisecondsToRun: [10000000 timesRepeat: [1 + 1]]   "1) =&gt;  38"
Time millisecondsToRun: [10000000 timesRepeat: [5.0 + 1]] "2) =&gt; 120"
Time millisecondsToRun: [10000000 timesRepeat: [1 + 5.0]] "3) =&gt; 289"
&lt;/pre&gt;
&lt;/p&gt;

&lt;p&gt;&lt;a href="http://webkit.org.nyud.net:8090/blog/214/introducing-squirrelfish-extreme/"&gt;Судя по короткому описанию&lt;/a&gt; именно подобие "статического предсказания типов" и реализовано в SFX.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7589481-3390682313549587427?l=www.smalltalk.ru' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.blogger.com/feeds/7589481/3390682313549587427/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=7589481&amp;postID=3390682313549587427' title='Комментарии: 5'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7589481/posts/default/3390682313549587427'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7589481/posts/default/3390682313549587427'/><link rel='alternate' type='text/html' href='http://www.smalltalk.ru/2008/09/smalltalk_21.html' title='Smalltalk и Все-Все-Все: Белка-Рыба наносит ответный удар'/><author><name>Andrei N.Sobchuck</name><uri>http://www.blogger.com/profile/06558669450434857988</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='16238507229338627901'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>5</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7589481.post-5890356565581222782</id><published>2008-09-18T22:27:00.012+03:00</published><updated>2008-09-25T16:19:16.228+03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='inside_st'/><title type='text'>Smalltalk и Все-Все-Все</title><content type='html'>&lt;p&gt;В последнее время как-то одновременно появились анонсы "быстрого JavaScript" сразу в трёх броузерах: FireFox 3.1 с движком &lt;a text="Анонс JavaScript-движка TraceMonkey" href="http://weblogs.mozillazine.org/roadmap/archives/2008/08/tracemonkey_javascript_lightsp.html"&gt;TraceMonkey&lt;/a&gt;, новоявленный GoogleChrome с движком &lt;a text="Описание сущности оптимизаций в V8" href="http://code.google.com/apis/v8/design.html"&gt;V8&lt;/a&gt; и Safari 4 с движком &lt;a text="Анонс SquirrelFish с кратким описанием устройства" href="http://webkit.org/blog/189/announcing-squirrelfish/"&gt;SquirrelFish&lt;/a&gt;. &lt;/p&gt;

&lt;p&gt;Казалось бы, при чем здесь Smalltalk?&lt;/p&gt;

&lt;p&gt;Тут нужно коротко изложить как развивались ВМ для ST. Первые версии ST, которые работали на &lt;a href="http://en.wikipedia.org/wiki/Xerox_Alto"&gt;Xerox Alto и Xerox Dorado&lt;/a&gt; были реализованы на микрокоде. Затем, с портированием ST на другие платформы появилась "классическая" ВМ исполняющая байткоды. Как я понимаю, именно с появлением ВМ проблема производительности встала в полный рост. Так, например, известно &lt;a href="http://acmqueue.com/modules.php?name=Content&amp;amp;pa=showpage&amp;amp;pid=273&amp;amp;page=3"&gt;утверждение Алана Кея в интервью за конец 2004г&lt;/a&gt;, что текущие процессоры исполняют ST всего в 50 раз быстрее чем Dorado. (&lt;i&gt;Речь вероятно идёт о таком параметре как "исполненные байткоды в секунду". Тест можно найти в Squeak в методе &lt;b&gt;Integer&amp;gt;&amp;gt;benchmark&lt;/b&gt;. У меня этот тест на Core2 Duo 2HHz показывает 360Мб/с. Если предположить, что &lt;a href="http://lists.canonical.org/pipermail/kragen-tol/2007-March/000850.html"&gt;Dorado выдавал 400Кб/с&lt;/a&gt;, то получается быстрее в ~900 раз. А в Squeak в комментарии к &lt;b&gt;Integer&amp;gt;&amp;gt;tinyBenchmark&lt;/b&gt; указывается, что 400 MHz PII выдавал 18 Мб/с, т.е. был в 46 раз быстрее Dorado&lt;/i&gt;). По-этому, уже в 1983 году, после попытки использования &lt;a text="Статья объясняющая, что такое 'шитый код'" href="http://www.netlib.narod.ru/library/book0001/ch02_01.htm"&gt;шитого кода&lt;/a&gt;, в &lt;a href="http://portal.acm.org/citation.cfm?id=800017.800542"&gt;ST-80 ВМ для 680x0 появился динамический транслятор&lt;/a&gt; или, говоря современным языком, &lt;a text="Статья с историей JIT" href="http://en.wikipedia.org/wiki/Just-in-time_compilation"&gt;JIT&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Но, одно лишь колличество исполненных байткодов за секунду это не единственный параметр характеризующий ST ВМ. Так как вызов любой операции в ST (теоретически) происходит только путём отправки сообщения, то помимо байткодов/сек измеряют еще и колличество отправленных сообщений за секунду. Для отправки некому объекту сообщения нужно найти метод-обработчик по &lt;i&gt;селектору&lt;/i&gt; (имени). Все методы лежат в словаре где ключ это селектор (имя) сообщения, а значение — метод, обрабатывающий сообщение. В классе хранятся только методы определённые непосредственно в этом классе, не включая методы родителей. Когда приходит сообщение, диспетчер производит поиск в таблице методов. Если находит метод соответствующий сообщению, то происходит его вызов, если не находит, то диспетчер переходит к классу родителя и процедура поиска повторяется. Иногда, приходится последовательно пройти всю иерархию вплоть до класса &lt;i&gt;Object&lt;/i&gt;.&lt;/p&gt;

&lt;p&gt;Естественно, чтобы постоянно не бегать по одним и тем же классам, результат поиска можно закешировать. Afaik, в первых ST использовался глобальный кеш, где ключем была пара - класс объекта и селектор сообщения. Этот механизм имеет ряд минусов. Например, ограниченный размер кеша приводит к вытеснению "старых" результатов и поиск приходится производить заново.&lt;/p&gt;

&lt;p&gt;В дальнейшем, эмпиричиским путём выяснилось, что в каждой отдельной точке посылки сообщения (call site) класс получателя меняется относительно редко. Такая точка вызова называется &lt;i&gt;мономорфной&lt;/i&gt;. Следовательно в большинстве случаев можно закешировать адресс метода-обработчика сообщения в самой точке вызова и избежать полного поиска. Такая техника называется &lt;i&gt;inline cache (IC)&lt;/i&gt;. При IC уже найденный адрес метода прописывается непосредственно в скомпилированом машинном коде. Код в точке вызова проверяет класс получателя на соответствие закешированному классу и переходит на процедуру поиска только если классы не совпадают. Очевидно, что эффективность такого кеша зависит от количества попаданий в кеш (hit ratio). Утверждается что hit ratio для ST программы более 90%, но это довольно старые данные (начало 80-х), а как это проверить самому я не знаю. IC был реализован вместе с первым JIT в уже упоминавшейся &lt;a href="http://portal.acm.org/citation.cfm?id=800017.800542"&gt;ВМ от Deutsch&amp;amp;Schiffman&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;А потом в лаборатории Sun появился &lt;a href="http://research.sun.com/self/"&gt;Self&lt;/a&gt;. Self отличается от ST не только тем, что &lt;a title="Объяснение прототипного программирования" href="http://ru.wikipedia.org/wiki/%D0%9F%D1%80%D0%BE%D1%82%D0%BE%D1%82%D0%B8%D0%BF%D0%BD%D0%BE%D0%B5_%D0%BF%D1%80%D0%BE%D0%B3%D1%80%D0%B0%D0%BC%D0%BC%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5"&gt;Self основан на прототипах&lt;/a&gt; в противовес классам, но и большей динамичностью. Например, там даже доступ к полям объекта происходит только через посылку сообщений, плюс штатная возможность менять иерархию наследования объекта, плюс множественное наследование. В общем, в Self есть куча особенностей затрудняющих создание эффективной реализации ВМ.&lt;/p&gt;

&lt;p&gt;В результате работ над Self-90 и Self-93 оказалось, что у того около 25% всех точек вызовов являются не мономорфными, а &lt;i&gt;полиморфными&lt;/i&gt;. То есть, местами где значительное число сообщений посылаются объектам разлных классов. Для ускорения работы таких случаев используется &lt;a href="/articles/cpp-pic.html"&gt;&lt;i&gt;polimorphic inline cache (PIC)&lt;/i&gt;&lt;/a&gt;. При этом, в скомпилированном машинном коде кешируется некоторое ограничченное (например 5) число найденных методов. Скомпилированный код при этом может выглядеть так:
&lt;pre&gt;
if (object-&gt;class == #A) goto #A::m;
if (object-&gt;class == #B) goto #B::m;
goto #system_lookup;
&lt;/pre&gt;
Количество сравнений увеличивается только при необходимости, то есть для мономорфных точек вызова эффективность будет точно такая же, как при простом IC. Если список классов переполняется, то какой-то из наличных закешированных методов заменяется новым. То есть PIC значительно теряет в эффективности в &lt;i&gt;мегаморфных&lt;/i&gt; точках вызова. Т.е. в точках где класс объектов меняется часто. Но, к счастью, таких мест незначительное количество. PIC перекочевал в современные ST ВМ. Например, PIC используется в &lt;a href="http://c2.com/cgi/wiki?HighlyPortableSmalltalk"&gt;HPS&lt;/a&gt; - ВМ для VisualWorks Smalltalk.
&lt;/p&gt;

&lt;p&gt;
Полезным "побочным" эффектом от использования PIC-ов является то, что в точках вызова накапливается информация о типах, что позволяет проводить адаптивную оптимизацию — перекомпиляцию методов с учетом информации о типах (а это позволяет, например, выполнять инлайнинг). Перекомпиляция проводится только для методов, которые выполняются особенно часто. Подсчет частоты вызова можно осуществлять либо счетчиком внутри метода либо семплированием. Эта техника так же была опробована в Self и показала хорошие результаты: применение PIC вместо IC дало ускорение 25%, а применение адаптивной оптимизации еще 25%.&lt;/p&gt;

&lt;p&gt;
Ряд людей, работавших в Sun над технологией адаптивной оптимизации для Self в конце 1994г. образовали LongView Technologies LLC, больше известную как Animorphic Systems. В конце 1996г. они представили диалект ST - &lt;a href="http://www.strongtalk.org/"&gt;Strongtalk&lt;/a&gt;. ВМ Strongtalk умела производить адаптивную оптимизацию. Однако, в это время &lt;a href="http://www.rsdn.ru/Forum/message/2080684.1.aspx"&gt;с индустрией ST стало очень плохо&lt;/a&gt;. И на рынок начала активно продвигаться Java. ВМ для Java (от Sun) в то время были совсем слабыми — простой интерпретатор с &lt;a href="http://en.wikipedia.org/wiki/Garbage_collection_%28computer_science%29#Precise_vs._conservative_and_internal_pointers"&gt;консервативным сборщиком мусора&lt;/a&gt; с кооперативной многозадачностью. И в 1997г Sun Microsystems приобрела LongView Technologies LLC (она же Animorphic Systems). Все работы над Strongtalk были приостановлены, а Java получила &lt;a href="http://java.sun.com/products/hotspot/docs/whitepaper/Java_HotSpot_WP_Final_4_30_01.html#pgfId=1082363"&gt;ВМ с адаптивной оптимизацией - HotSpot&lt;/a&gt;.
&lt;/p&gt;

&lt;p&gt;Не смотря на то, что технология адаптивной оптимизации ведомой типами доказала свою эффективность и была описана и изучена, её дальнейшему внедрению в диалекты ST помешала одна проблема. Динамический оптимизатор являлся частью JIT и работал непосредственно в машкодах апаратной платформы. Что усложняло портирование оптимизирующей ВМ на разные платформы. Именно по этой причине Squeak разрабатывался как чистый интерпретатор, что позволяет ему работать на куче различных железяк под самыми разными ОС (хотя &lt;a href="http://www.hirschfeld.org/misc/media/HauptHirschfeldDenker_2007_TypeFeedbackForBytecodeInterpreters.pdf"&gt;PIC можно применять и с интерпретаторами&lt;/a&gt;). Из-за резкого схлопывания ST-рынка у производителей диалектов ресурсы были очень ограничены, ST ВМ обычно приходится поддерживать для &lt;a href="http://www.cincomsmalltalk.com/scripts/DownloadFiles.ssp#VMLinks"&gt;широкого диапазона различных платформ&lt;/a&gt;, а воспользоваться преимуществами адаптивной оптимизации хотелось. Так к 2002г. и оформилась идея, что оптимизатор должен быть реализован на ST, работать в образе и оптимизировать байткод на основании информации собраной в PIC. Технологию An Adaptive Optimizing Smalltalk Architecture (AOStA) начали разрабатывать Элиот Миранда (разработчик ВМ для VisualWorks) и Джилад Браха (разработчик ВМ для Self, Strongtalk, HotSpot) и &lt;a href="http://www.cincomsmalltalk.com/blog/blogView?showComments=true&amp;entry=3236397054"&gt;представили первый результат в 2003г.&lt;/a&gt;, но до промышленного использования дело не дошло до сих пор.&lt;/p&gt; 

&lt;p&gt;&lt;a href="http://vst.ensm-douai.fr/Esug2008Media/uploads/1/cog_miranda.pdf"&gt;Суть идеи&lt;/a&gt; - на основе некоей информации накопленной ВМ, производится оптимизация байткода: спекулятивный инлайнинг, математические операции над примитивными (разбоксированными) значениями, операции над массивами без проверок индексов и др. Для этого нужно расширить байткоды и добавить в ВМ примитивы (&lt;i&gt;помните, что "примитивами" в ST называются функции в ВМ, а не примитивные значения&lt;/i&gt;) работающие без избыточных проверок. Машкод же генерит один и тот же JIT, так как оптимизированный байткод это надмножество исходного неоптимального байткода. Опять же, как и в случае с PIC, генерировать более оптимальный байткод можно и для интерпретатора. &lt;a href="http://www.squeaksource.com/AOStA.html"&gt;Порт AOStA, который разрабатывался тогда в 2003 для Squeak доступен в репозитории SqueakSource&lt;/a&gt;. (Не нужно путать AOStA с &lt;a href="http://www.kampjes.demon.co.uk/articles/exuperyDesign.pdf"&gt;Exupery, адаптивным компилятором в машкод на чистом ST&lt;/a&gt;).&lt;/p&gt;

&lt;p&gt;Область байткод-в-байткод динамической оптимизации начинают осваивать наши "соседи": &lt;a href="http://groovy.codehaus.org/GJIT+-+Groovy+Just-In-Time+Compiler"&gt;GJIT&lt;/a&gt; - динамический оптимизатор для &lt;a href="http://groovy.codehaus.org/"&gt;Groovy&lt;/a&gt;. Написан на Java и использует трансформацию байткода через &lt;a href="http://java.sun.com/j2se/1.5.0/docs/guide/jvmti/index.html"&gt;JVMTI&lt;/a&gt;. Показывает &lt;a title="Результат ускорения Groovy при использовании GJIT" href="http://chanwit.blogspot.com/2008/08/java-near-speed-groovy.html"&gt;значительное ускорение, по крайней мере на вычислительных тестах&lt;/a&gt;. Т.е. для начала результат ободряющий.&lt;/p&gt;

&lt;p&gt;Первоисточники информации по адаптивной управляемой типами трансляции:
&lt;ul&gt;
&lt;li&gt;"&lt;a href="http://www.cs.ucsb.edu/~urs/oocsb/papers/type-feedback.html"&gt;Optimizing Dynamically-Dispatched Calls with Run-Time Type Feedback&lt;/a&gt;". Proceedings of the ACM SIGPLAN `94 Conference on Programming Language Design and Implementation, Orlando, FL, June 1994. &lt;/li&gt;
&lt;li&gt;"&lt;a href="http://research.sun.com/self/papers/urs-thesis.html"&gt;Adaptive optimization for Self: Reconciling High Performance with Exploratory Programming&lt;/a&gt;". Ph.D. thesis, Computer Science Department, Stanford University. &lt;/li&gt;
&lt;li&gt;"&lt;a href="http://research.sun.com/self/papers/pics.html"&gt;Optimizing Dynamically-Typed Object-Oriented Programming Languages with Polymorphic Inline Caches&lt;/a&gt;". ECOOP '91 Conference Proceedings, Geneva, Switzerland, July, 1991.
&lt;/li&gt;
&lt;/ul&gt;
&lt;/p&gt;

&lt;p&gt;Обратите внимание, что на текущий момент все динамические оптимизаторы срабатывают не для всего исполняемого (байт)кода, а только в случае обнаружения узкого места - часто выполняемого участка. Адаптивная оптимизация управляемая типами находит и оптимизирует часто используемы методы. Но гранулярность в метод это не единственный возможный алгоритм. Есть еще "&lt;a href="http://www.ics.uci.edu/~franz/Site/pubs-pdf/C44Prepub.pdf"&gt;trace trees&lt;/a&gt;" ("деревья трас").&lt;/p&gt;

&lt;p&gt;Метод "trace trees" (TT) был разработан для динамической оптимизации машкода в проекте Dynamo, а затем был проработан при разработке оптимизирующих Java JIT для малых устройств. Идея заключается в оптимизации не отдельных методов, а циклов. Циклы находятся путём отслеживания обратных переходов. Когда, во время интерпретации байткода, ВМ обнаруживает обратный переход, то точка куда перешло управление помечается, как потенциальное начало цикла. После некоторого критического колличества переходов на помеченное начало цикла включается режим трассирования. Все выполненые во время трассирования байткоды формируют дерево трас. Формирование дерева прекращается после окончания цикла. Сформированная трасса оптимизируется и компилируется в код целевой платформы. Неисполненные куски цикла так и остаются в байткоде и инкрементально добавляются в дерево трасс, если на каком-то этапе управление попадает туда. Трасса затем перекомпилируется целиком. Все вызовы методов, которые вызываются в процессе трассирования, инлайнятся в трассу. Если инлайнится виртуальный метод, то перед заинлайненым блоком добавляется проверка класса, как в IC. При некоторых условиях &lt;a href="http://blog.mozilla.com/dmandelin/2008/05/28/tamarin-tracing-internals-iv-trace-optimization/"&gt;трассировка может прерываться и не приводить к генерацию машкода&lt;/a&gt;. Например, при вылете исключения, при чрезмерном разрастании трасс и пр. &lt;a href="http://article.gmane.org/gmane.comp.lang.lua.general/44781"&gt;Используется в LuaJIT 2.x&lt;/a&gt;.
&lt;/p&gt;

&lt;p&gt;Не смотря на то, что из байткодов в машкод компилируется только небольшая часть программы, тесты показывают хорошую производительность систем на TT. Статьи по теме:
&lt;ul&gt;
&lt;li&gt;"&lt;a href="http://www.hpl.hp.com/techreports/1999/HPL-1999-78.pdf"&gt;Transparent dynamic optimization: The design and implementation of Dynamo (1999)&lt;/a&gt;" by Vasanth Bala, Evelyn Duesterwald, Sanjeev Banerjia.&lt;/li&gt;
&lt;li&gt;"&lt;a href="http://www2.imm.dtu.dk/pubdb/views/publication_details.php?id=4746"&gt;HotpathVM: An Effective JIT for Resource-constrained Devices&lt;/a&gt;". Andreas Gal, Michael Franz, Christian W. Probst&lt;/li&gt;
&lt;li&gt;"&lt;a href="http://www.ics.uci.edu/~franz/Site/pubs-pdf/ICS-TR-06-16.pdf"&gt;Incremental Dynamic Code Generation with Trace Trees&lt;/a&gt;". Andreas Gal, Michael Franz.&lt;/li&gt;
&lt;li&gt;"&lt;a href="http://www.ics.uci.edu/~franz/Site/pubs-pdf/ICS-TR-07-12.pdf"&gt;Making the Compilation “Pipeline” Explicit: Dynamic Compilation Using Trace Tree Serialization&lt;/a&gt;". Andreas Gal, Michael Bebenita, Mason Chang, and Michael Franz.&lt;/li&gt;
&lt;/ul&gt;
&lt;/p&gt;

&lt;p&gt;
Теперь вернёмся к началу поста. JavaScript (JS) de-facto занял нишу, на которую изначально претендовала Java - интернет языка. Обладая таким статусом стыдно работать на убогих интерпретатора со сборщиками мусора на счетчиках ссылок. Сейчас ситуация резко меняется.&lt;/p&gt;

&lt;p&gt;Движок от Google - &lt;a href="http://lists.squeakfoundation.org/pipermail/squeak-dev/2008-September/131239.html"&gt;V8 - разрабатывают специалисты, которые работали над Strongtalk в Animorphic&lt;/a&gt; и, затем, над HotSpot. V8 - это &lt;i&gt;не&lt;/i&gt; адаптация ВМ для ST. В V8 нет байткода, из исходного кода генерируется непосредственно машинный код. От байткода отказались, так как JS код постоянно загружается новый. Для поддержки динамической диспетчерезации используется PIC. 
&lt;/p&gt;

&lt;p&gt;Движок от Mozilla - TraceMonkey - наоборот, компилирует JS в байткод (учитывая, что многие плагины к FF написаны на JavaScript это полезная фича). Дальше берётся за работу динамический транслятор, который использует "trace trees" - &lt;a href="https://wiki.mozilla.org/Tamarin:Tracing"&gt;Tamarin&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Движок от Apple - SquirrelFish - простой интерпретатор байткода (что удивляет, так как именно Apple "ведёт" &lt;a href="http://llvm.org/"&gt;LLVM&lt;/a&gt;). Но, хотя SquirrelFish и не компилирует в машкод, в отличии от двух своих конкурентов, &lt;a title="Сравнение TraceMonkey со SquirrelFish" href="http://www.masonchang.com/2008/08/tracemonkey-vs-squirrelfish.html"&gt;скорость этот интерпретатор показывает вполне приличную&lt;/a&gt;.&lt;/p&gt;

&lt;i&gt;PS. Продолжение &lt;a href="http://www.smalltalk.ru/2008/09/smalltalk_21.html"&gt;читайте в следующей заметке&lt;/a&gt;.&lt;/i&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7589481-5890356565581222782?l=www.smalltalk.ru' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.blogger.com/feeds/7589481/5890356565581222782/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=7589481&amp;postID=5890356565581222782' title='Комментарии: 5'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7589481/posts/default/5890356565581222782'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7589481/posts/default/5890356565581222782'/><link rel='alternate' type='text/html' href='http://www.smalltalk.ru/2008/09/smalltalk.html' title='Smalltalk и Все-Все-Все'/><author><name>Andrei N.Sobchuck</name><uri>http://www.blogger.com/profile/06558669450434857988</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='16238507229338627901'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>5</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7589481.post-2507709136947252747</id><published>2008-09-15T17:01:00.009+03:00</published><updated>2008-09-15T19:59:07.935+03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='squeak'/><title type='text'>[Squeak] Новый сайт Squeakland</title><content type='html'>&lt;p&gt;
Обновился сайт &lt;a title="Домашний сайт Etoys" href="http://www.squeakland.org"&gt;squeakland.org&lt;/a&gt; - домашний сайт &lt;a title="Статья с небольшой демонстрацией практических возможностей Etoys" href="/2005/08/squeak.html"&gt;системы для обучения детей Squeak Etoys&lt;/a&gt;. Эта система используется для обучения по всему миру (исключая, пожалуй, ex-USSR).
&lt;/p&gt;

&lt;p&gt;
Одной из особенностей Etoys (да и &lt;a href="/2006/01/squeak-scratch.html"&gt;остальных обучающих систем построенных в этих традициях, как Scratch или Small-land&lt;/a&gt;) является &lt;a href="http://squeakland.org/about/intro/article.jsp?id=2317"&gt;система скриптования поведения объектов на экране&lt;/a&gt;. Подобную подсистему сделали неотъемлемой частью в &lt;a href="/2005/06/squeak-tweak-wiki.html"&gt;Tweak&lt;/a&gt;, новом визуальном фреймворке &lt;a href="http://croquetproject.org/index.php/2D_GUI:_MVC/Morphic/Tweak"&gt;созданном для Croquet&lt;/a&gt;.
&lt;/p&gt;

&lt;p&gt;Как мне видится, у "больших дядек" тоже есть аналог подсистемы скриптования - речь идёт о &lt;a href="http://office.microsoft.com/en-us/access/CH063664881033.aspx"&gt;макросах в MS Access&lt;/a&gt;.&lt;/p&gt;

&lt;center&gt;
&lt;i&gt;Визуальный интерфейс генерации скриптов в Etoys&lt;/i&gt;:
&lt;div&gt;&lt;img title="Визуальный интерфейс генерации скриптов в Etoys" src='/images/etoys-scripts.png' /&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;i&gt;Визуальный интерфейс генерации макросов в MS Access&lt;/i&gt;:
&lt;div&gt;&lt;img title="Визуальный интерфейс генерации скриптов в Etoys" src='/images/ms-access-macro.png' /&gt;&lt;/div&gt;
&lt;/center&gt;

&lt;p&gt;У меня от использования макросов в MS Access 97 осталось 10 летней давности субъективное мнение - минусами были глобальное состояние, и полное несоответствие между функционалом доступным через макросы против функционала доступного через API из &lt;a href="http://ru.wikipedia.org/wiki/Visual_Basic_for_Applications"&gt;VBA&lt;/a&gt;. Я не знаю о востребованности и удобстве MSAccess-макросов, но факт что этот функционал остаётся доступен второй десяток лет говорит о том, что свой пользователь у такого подхода (пусть даже с такими ограничениями как в MS Access) есть.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7589481-2507709136947252747?l=www.smalltalk.ru' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.blogger.com/feeds/7589481/2507709136947252747/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=7589481&amp;postID=2507709136947252747' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7589481/posts/default/2507709136947252747'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7589481/posts/default/2507709136947252747'/><link rel='alternate' type='text/html' href='http://www.smalltalk.ru/2008/09/squeak-squeakland.html' title='[Squeak] Новый сайт Squeakland'/><author><name>Andrei N.Sobchuck</name><uri>http://www.blogger.com/profile/06558669450434857988</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='16238507229338627901'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7589481.post-818981175405413644</id><published>2008-09-15T02:47:00.003+03:00</published><updated>2008-09-15T03:03:21.475+03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='squeak'/><title type='text'>[Squeak] Squeak для iPhone</title><content type='html'>&lt;center&gt;&lt;img src='/images/squeak-on-iphone.jpg' /&gt;&lt;/center&gt;

Выпущен порт Squeak на &lt;a href="http://www.apple.com/iphone/"&gt;iPhone&lt;/a&gt;/&lt;a href="http://www.apple.com/ipodtouch/"&gt;iPod Touch&lt;/a&gt;. Портировать нужно было не только с учетом процессорной платформы, но и с учетом &lt;a href="http://en.wikipedia.org/wiki/IPhone"&gt;multi-touch интерфейса&lt;/a&gt;. Доступен &lt;a href="http://video.google.fr/videoplay?docid=-8336229069737911818&amp;hl=fr"&gt;демо-ролик&lt;/a&gt;. Подробнее &lt;a href="http://news.squeak.org/2008/09/11/squeak-on-the-iphone-available-for-download/"&gt;читайте на The Weekly Squeak&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7589481-818981175405413644?l=www.smalltalk.ru' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.blogger.com/feeds/7589481/818981175405413644/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=7589481&amp;postID=818981175405413644' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7589481/posts/default/818981175405413644'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7589481/posts/default/818981175405413644'/><link rel='alternate' type='text/html' href='http://www.smalltalk.ru/2008/09/squeak-squeak-iphone.html' title='[Squeak] Squeak для iPhone'/><author><name>Andrei N.Sobchuck</name><uri>http://www.blogger.com/profile/06558669450434857988</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='16238507229338627901'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7589481.post-8381704622777792028</id><published>2008-09-08T00:03:00.002+03:00</published><updated>2008-09-08T00:12:27.878+03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='interop'/><category scheme='http://www.blogger.com/atom/ns#' term='squeak'/><title type='text'>[Squeak] SqueakDBX</title><content type='html'>&lt;p&gt;&lt;a href='http://news.squeak.org/2008/08/22/squeakdbx-beta-release-for-opendbx-plugin/'&gt;SqueakDBX&lt;/a&gt; - интерфейс к &lt;a href='http://www.linuxnetworks.de/doc/index.php/OpenDBX'&gt;OpenDBX&lt;/a&gt;. OpenDBX это С-библиотека для доступа к ряду &lt;a href='http://www.linuxnetworks.de/doc/index.php/OpenDBX/Support'&gt;различных РСУБД на ряде самых распространённых платформ&lt;/a&gt;. Напомню, что сейчас единого интерфейса для доступа к РСУБД на Squeak нет.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7589481-8381704622777792028?l=www.smalltalk.ru' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.blogger.com/feeds/7589481/8381704622777792028/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=7589481&amp;postID=8381704622777792028' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7589481/posts/default/8381704622777792028'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7589481/posts/default/8381704622777792028'/><link rel='alternate' type='text/html' href='http://www.smalltalk.ru/2008/09/squeak-squeakdbx.html' title='[Squeak] SqueakDBX'/><author><name>Andrei N.Sobchuck</name><uri>http://www.blogger.com/profile/06558669450434857988</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='16238507229338627901'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7589481.post-197683687670502350</id><published>2008-09-07T23:34:00.003+03:00</published><updated>2008-09-07T23:52:53.539+03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='squeak'/><title type='text'>[Squeak] Monticello 2</title><content type='html'>&lt;p&gt;Выпущен &lt;a href="http://news.squeak.org/2008/08/15/all-new-monticello-2/"&gt;релиз Monticello 2&lt;/a&gt; - распределённой системы контроля версий широко используемой в Squeak. &lt;a href="http://wiki.squeak.org/squeak/5624."&gt;Версия 2 призвана исправить ряд недочетов&lt;/a&gt; найденных при работе с Monticello 1. Например в версии 1 единицей версионирования является пакет, а версии 2 это отдельные классы, методы, переменные.&lt;/p&gt;

&lt;p&gt;&lt;a href="http://wiki.squeak.org/squeak/5623"&gt;Monticello 1&lt;/a&gt; это распределённая система контроля версий, созданная &lt;a href='/2005/12/blog-post.html'&gt;Ави Браянтом&lt;/a&gt; при разработке Seaside. Используется в &lt;a href="http://wiki.squeak.org/squeak/3857"&gt;SqueakSource&lt;/a&gt;. Есть порт Monticello на Gemstone/S.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7589481-197683687670502350?l=www.smalltalk.ru' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.blogger.com/feeds/7589481/197683687670502350/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=7589481&amp;postID=197683687670502350' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7589481/posts/default/197683687670502350'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7589481/posts/default/197683687670502350'/><link rel='alternate' type='text/html' href='http://www.smalltalk.ru/2008/09/squeak-monticello-2.html' title='[Squeak] Monticello 2'/><author><name>Andrei N.Sobchuck</name><uri>http://www.blogger.com/profile/06558669450434857988</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='16238507229338627901'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7589481.post-2337972332054677811</id><published>2008-09-07T20:25:00.003+03:00</published><updated>2008-09-07T21:02:17.355+03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='new version'/><category scheme='http://www.blogger.com/atom/ns#' term='gst'/><title type='text'>[GST] GNU Smalltalk 3.0.4 release</title><content type='html'>&lt;center&gt;&lt;img src='/images/gst_logo.png' /&gt;&lt;/center&gt;
&lt;p&gt;&lt;a href='/2008/01/gst-gnu-smalltalk-30-release.html'&gt;Ветка GST 3.0&lt;/a&gt; обновилась - вышел &lt;a href='http://smalltalk.gnu.org/news/gnu-smalltalk-3-0-4'&gt;GST версии 3.0.4&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Из изменений - багфиксы и небольшие улучшения в производительности.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7589481-2337972332054677811?l=www.smalltalk.ru' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.blogger.com/feeds/7589481/2337972332054677811/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=7589481&amp;postID=2337972332054677811' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7589481/posts/default/2337972332054677811'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7589481/posts/default/2337972332054677811'/><link rel='alternate' type='text/html' href='http://www.smalltalk.ru/2008/09/gst-gnu-smalltalk-304-release.html' title='[GST] GNU Smalltalk 3.0.4 release'/><author><name>Andrei N.Sobchuck</name><uri>http://www.blogger.com/profile/06558669450434857988</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='16238507229338627901'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7589481.post-7862323459550328331</id><published>2008-08-02T17:07:00.005+03:00</published><updated>2008-08-02T19:59:40.358+03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='gemstone'/><title type='text'>MagLev - Gemstone for Ruby</title><content type='html'>&lt;p&gt;&lt;i&gt;Не совсем про Smalltalk, но поскольку Ruby очень близок...&lt;/i&gt;&lt;/p&gt;

&lt;p&gt;На конференции &lt;a href="http://en.oreilly.com/rails2008/public/content/home"&gt;RailsConf 2008&lt;/a&gt; компания &lt;a href="http://www.infoq.com/news/2008/05/MagLevAtRailsConf"&gt;Gemstone объявила&lt;/a&gt;, что разрабатывает продукт аналогичный &lt;a href="/2007/04/blog-post.html"&gt;Gemstone/S&lt;/a&gt;, но использующий Ruby ВМ. Продукт называется &lt;a title='Домашняя страница MagLev' href="http://ruby.gemstone.com"&gt;MagLev&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;То есть, это будет распределённая многопользовательская транзакционная ВМ Ruby. Предполагается, что это будет продукт полностью отдельный от Gemstone/S, хотя возможность исполнять ST код пока останется. Что означает, что набор байткодов был расширен для поддержки специфики Ruby.&lt;/p&gt;

&lt;p&gt;&lt;a href="http://www.vimeo.com/1147409"&gt;К работе над MagLev привлечен Ави Браянт&lt;/a&gt;, автор &lt;a href="/labels/seaside.html"&gt;Seaside &lt;/a&gt;и &lt;a href="/2007/03/dabbledb.html"&gt;DabbleDB&lt;/a&gt;. Ави пришел к Smalltalk c Ruby и до сих пор остаётся пропагандистом &lt;a href="/2005/12/blog-post.html"&gt;идеи использовать продвинутые ВМ от ST для Ruby&lt;/a&gt;.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7589481-7862323459550328331?l=www.smalltalk.ru' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.blogger.com/feeds/7589481/7862323459550328331/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=7589481&amp;postID=7862323459550328331' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7589481/posts/default/7862323459550328331'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7589481/posts/default/7862323459550328331'/><link rel='alternate' type='text/html' href='http://www.smalltalk.ru/2008/08/maglev-gemstone-for-ruby.html' title='MagLev - Gemstone for Ruby'/><author><name>Andrei N.Sobchuck</name><uri>http://www.blogger.com/profile/06558669450434857988</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='16238507229338627901'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7589481.post-3543728792155998731</id><published>2008-08-02T14:40:00.006+03:00</published><updated>2008-08-04T13:30:24.180+03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='new version'/><category scheme='http://www.blogger.com/atom/ns#' term='squeak'/><title type='text'>[Squeak] JSqueak, Potato</title><content type='html'>&lt;center&gt;&lt;img src='/images/potato_2.gif' alt='Potato logo' /&gt;&lt;/center&gt;

&lt;p&gt;
Дэн Инголс выпустил под MIT-лицензией JSqueak. &lt;a href="http://research.sun.com/projects/JSqueak/"&gt;JSqueak это интерпретатор Squeak 2&lt;/a&gt; (текущая версия Squeak - 3).&lt;/p&gt;

&lt;p&gt;Дэн &lt;a href="/2006/04/squeak-squeak-on-java.html"&gt;разработал JSqueak в конце 2006 года&lt;/a&gt; только для того чтобы получше разобраться в Java и не предполагалось никакого дальнейшего использования кода. Тем не менее уже появился &lt;a href="http://news.squeak.org/2008/07/07/potato-version-of-jsqueak-from-hpi"&gt;форк JSqueak под названием Potato&lt;/a&gt;. Из уже внесённых в Potato добавлений: поддержка 32 битных цветов (оригинальный JSqueak - черно-белый), ограниченная возможность вызывать Java-методы (оригинальный JSqueak не поддерживает крос-языковой совместимости) и кучу прочих улучшений и багфиксов.
&lt;/p&gt;

&lt;p&gt;Для желающих поучаствовать в разработке JSqueak создан &lt;a title="Список рассылки для любителей JSqueak" href="http://www.experimentalstuff.com/pipermail/jsqueakinterest/"&gt;список рассылки&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;&lt;i&gt;PS: &lt;a href="http://potatovm.blogspot.com/"&gt;Блог по Potato: http://potatovm.blogspot.com&lt;/a&gt;&lt;/i&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7589481-3543728792155998731?l=www.smalltalk.ru' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.blogger.com/feeds/7589481/3543728792155998731/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=7589481&amp;postID=3543728792155998731' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7589481/posts/default/3543728792155998731'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7589481/posts/default/3543728792155998731'/><link rel='alternate' type='text/html' href='http://www.smalltalk.ru/2008/08/squeak-jsqueak-potato.html' title='[Squeak] JSqueak, Potato'/><author><name>Andrei N.Sobchuck</name><uri>http://www.blogger.com/profile/06558669450434857988</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='16238507229338627901'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7589481.post-6326596385355399785</id><published>2008-08-01T22:27:00.002+03:00</published><updated>2008-08-01T22:37:15.500+03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='squeak'/><title type='text'>[Squeak] WxSqueak 0.5</title><content type='html'>&lt;center&gt;&lt;img src="/images/wxsqueak-win-thumb.jpg" alt="Минискриншот WxSqueak" /&gt;&lt;/center&gt;
&lt;p&gt;После долгого перерыва обновился &lt;a href="http://wxsqueak.org/"&gt;WxSqueak&lt;/a&gt; до версии 0.5. WxSqueak это интерфейс из Squeak к &lt;a href="http://www.wxwidgets.org/"&gt;wxWidgets&lt;/a&gt;. Из улучшений, например, поддержка Unicode.
&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7589481-6326596385355399785?l=www.smalltalk.ru' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.blogger.com/feeds/7589481/6326596385355399785/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=7589481&amp;postID=6326596385355399785' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7589481/posts/default/6326596385355399785'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7589481/posts/default/6326596385355399785'/><link rel='alternate' type='text/html' href='http://www.smalltalk.ru/2008/08/squeak-wxsqueak-05.html' title='[Squeak] WxSqueak 0.5'/><author><name>Andrei N.Sobchuck</name><uri>http://www.blogger.com/profile/06558669450434857988</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='16238507229338627901'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7589481.post-8283671703055208389</id><published>2008-07-31T20:01:00.004+03:00</published><updated>2008-08-01T01:49:39.755+03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='stx'/><category scheme='http://www.blogger.com/atom/ns#' term='new version'/><title type='text'>[STX] Smalltalk/X 5.4.1</title><content type='html'>&lt;p&gt;
Обновился сайт &lt;a title="Домашняя страница St/X" href="http://www.exept.de/en/products/smalltalk-x/stx-overview"&gt;Smalltalk/X&lt;/a&gt;, а так же появилась &lt;a href="http://www.exept.de/en/products/smalltalk-x/stx-download/stx-download-archiv"&gt;новая версия St/X (пока только под Windows) - 5.4.1&lt;/a&gt;.
&lt;/p&gt;

&lt;p&gt;
Этот диалект интересен тем, что зародился он как &lt;a href="http://live.exept.de/doc/online/english/programming/stc.man.html"&gt;транслятор из St в C&lt;/a&gt;. Эта же &lt;a href="http://live.exept.de/doc/online/english/overview/TOP.html"&gt;возможность существует&lt;/a&gt; и поныне. Т.е. можно скомпилировать всю программу в самодостаточный исполняемый файл. Либо &lt;a href="http://live.exept.de/doc/online/english/programming/compiling.html"&gt;предкомпилировать непосредственно в коды процессора отдельные модули&lt;/a&gt;, а остальную часть оставить для JIT. Естественной является и &lt;a href="http://live.exept.de/doc/online/english/programming/primitive.html"&gt;возможность встраивать С-код прямо в St-методы&lt;/a&gt;.
&lt;/p&gt;

&lt;p&gt;Под win32 С-код компилируется с помощью &lt;a href="http://www.codegear.com/downloads/free/cppbuilder"&gt;Borland C 5.5&lt;/a&gt;. В свежих версиях St/X появилась (эксперементальная) поддержка MS Visual C, однако всё еще требуется make от Borland. Можно ли воспользоваться gcc под win32 мне не понятно.&lt;/p&gt;

&lt;p&gt;В поставке идёт вполне &lt;a href="http://live.exept.de/doc/online/english/TOP.html"&gt;приличная документация&lt;/a&gt;, поддерживается &lt;a href="http://live.exept.de/doc/online/english/overview/featurelist.html"&gt;куча платформ&lt;/a&gt;, есть &lt;a href="http://live.exept.de/doc/online/english/programming/viewintro.html"&gt;достаточный набор виджетов&lt;/a&gt; (хотя за основу взят look&amp;feel от OpenStep, что несколько непривычно для пользователей win). При разработке ориентир был на диалект VW (как уходящий корнями в оригинальный ST-80), но есть и &lt;a href="http://live.exept.de/doc/online/english/programming/differences.html"&gt;ряд отличий&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;И вообще диалект выглядит интересно и производит очень приятное впечатление. Единственный недостаток - колличество разработчиков и отсутствие сообщества. Только этим можно объяснить небольшие недоработки, которые хотя и легко исправляются, но требуют времени на погружение в контекст.&lt;/p&gt;

&lt;p&gt;Итог: мне кажется, что этот диалект зря находится в тени. И основная причина этого либо отсутсвие сил либо нежелание разработчиков заниматься выращиванием сообщества.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7589481-8283671703055208389?l=www.smalltalk.ru' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.blogger.com/feeds/7589481/8283671703055208389/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=7589481&amp;postID=8283671703055208389' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7589481/posts/default/8283671703055208389'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7589481/posts/default/8283671703055208389'/><link rel='alternate' type='text/html' href='http://www.smalltalk.ru/2008/07/stx-smalltalkx-541.html' title='[STX] Smalltalk/X 5.4.1'/><author><name>Andrei N.Sobchuck</name><uri>http://www.blogger.com/profile/06558669450434857988</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='16238507229338627901'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7589481.post-7027360060419856225</id><published>2008-06-02T21:28:00.006+03:00</published><updated>2008-06-02T21:43:32.698+03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='dolphin'/><category scheme='http://www.blogger.com/atom/ns#' term='vw'/><category scheme='http://www.blogger.com/atom/ns#' term='interop'/><title type='text'>Заходите на чашечку кофе сорта Java</title><content type='html'>&lt;p&gt;Вот &lt;a href="/2007/11/vw-store.html"&gt;люди спрашивали, как St может использовать софт на Java&lt;/a&gt;. &lt;a href="http://astares.blogspot.com/2008/04/javaconnect-java-assmalltalkvalue.html"&gt;Как оказалось&lt;/a&gt;, есть несколько пакетов. Для VW это &lt;a href="http://www.info.ucl.ac.be/%7Ejbrichau/javaconnect.html"&gt;JavaConnect&lt;/a&gt; и &lt;a href="http://jniport.wikispaces.com/"&gt;JNIPort for VW&lt;/a&gt;. Для Dolphin это исходный вариант всё того же &lt;a href="http://jniport.wikispaces.com/Downloads"&gt;JNIPort&lt;/a&gt;.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7589481-7027360060419856225?l=www.smalltalk.ru' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.blogger.com/feeds/7589481/7027360060419856225/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=7589481&amp;postID=7027360060419856225' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7589481/posts/default/7027360060419856225'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7589481/posts/default/7027360060419856225'/><link rel='alternate' type='text/html' href='http://www.smalltalk.ru/2008/06/java.html' title='Заходите на чашечку кофе сорта Java'/><author><name>Andrei N.Sobchuck</name><uri>http://www.blogger.com/profile/06558669450434857988</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='16238507229338627901'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7589481.post-4035517967905957501</id><published>2008-06-02T20:38:00.009+03:00</published><updated>2008-08-02T15:04:01.695+03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='croquet'/><category scheme='http://www.blogger.com/atom/ns#' term='squeak'/><title type='text'>[Squeak] Hydra VM: A multi-core capable Croquet VM</title><content type='html'>&lt;p&gt;Qwaq, разработчик &lt;a href="http://www.smalltalk.ru/2007/03/croquet-qwaq-forums.html"&gt;Qwaq Forums&lt;/a&gt; выпустила под MIT-лицензией &lt;a href="http://lists.squeakfoundation.org/pipermail/squeak-dev/2008-February/125719.html"&gt;мультиядерную виртуальную машину Hydra VM&lt;/a&gt;. Насколько я понимаю, &lt;a href="http://lists.squeakfoundation.org/pipermail/squeak-dev/2008-February/125150.html"&gt;Hydra  позволяет активировать различные  образы в отдельных нитях одной ВМ&lt;/a&gt;, что позволяет загрузить все доступные процессоры. Этим дополнительным образам затем &lt;a href="http://lists.squeakfoundation.org/pipermail/squeak-dev/2008-February/125441.html"&gt;можно отдавать команды&lt;/a&gt;. Пока же, обычной схемой являлся &lt;a href="http://onsmalltalk.com/programming/smalltalk/seaside/scaling-seaside/"&gt;запуск множества отдельных образов в отдельных ВМ&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Сейчас &lt;a href="http://squeakvm.org/%7Esig/hydravm/devnotes.html"&gt;Hydra VM - работает только под Win32&lt;/a&gt;. Доступны &lt;a alt="Исходники и билды Hydra VM" href="http://ftp.squeak.org/HydraVM/"&gt;исходники и билды ВМ версии 1.0 и необходимых плагинов&lt;/a&gt;. Свежие билды ВМ можно найти по адресу &lt;a href="http://ftp.squeak.org/HydraVM/latest_builds/win32/"&gt;http://ftp.squeak.org/HydraVM/latest_builds/win32/&lt;/a&gt;.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7589481-4035517967905957501?l=www.smalltalk.ru' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.blogger.com/feeds/7589481/4035517967905957501/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=7589481&amp;postID=4035517967905957501' title='Комментарии: 1'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7589481/posts/default/4035517967905957501'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7589481/posts/default/4035517967905957501'/><link rel='alternate' type='text/html' href='http://www.smalltalk.ru/2008/06/squeak-hydra-vm-multi-core-capable.html' title='[Squeak] Hydra VM: A multi-core capable Croquet VM'/><author><name>Andrei N.Sobchuck</name><uri>http://www.blogger.com/profile/06558669450434857988</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='16238507229338627901'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7589481.post-4641527378976054639</id><published>2008-05-21T14:23:00.006+03:00</published><updated>2008-05-21T15:59:49.385+03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='vw'/><title type='text'>[VW] SOS: спасите наши души</title><content type='html'>&lt;p&gt;
Иногда, при разработке приложения можно столкнуться с тем, что UI среды перестаёт отвечать. Добиться этого достаточно просто. Откройте Workspace  и выполните такой код:
&lt;pre&gt;
[true] whileTrue: [].
&lt;/pre&gt;
Система заблокирована и может быть не понятно, что делать в такой ситуации. Выходов может быть несколько.
&lt;/p&gt;
&lt;p&gt;Во-первых, можно нажать комбинацию &lt;i&gt;&amp;lt;Ctrl&amp;gt;-\&lt;/i&gt;. При этом откроется "Process Monitor" и все пользовательские процессы будут приостановлены.
&lt;center&gt;
&lt;img src='/images/vw-processmonitor.png' alt='Монитор процессов - Process Monitor' /&gt;
&lt;/center&gt;
Из монитора процессов можно поменять приоритет процессам, открыть на любом процессе инспектор, прибить процес или, что можеть быть более полезно, открыть отладчик.
&lt;/p&gt;

&lt;p&gt;Во-вторых, если я правильно помню, то монитор процессов, это относительно новая штука. В VW с давних времён существовала возможность открыть отладчик на текущем процессе. Вызывается отладчик комбинацией &lt;i&gt;&amp;lt;Ctrl&amp;gt;-Y&lt;/i&gt;. В зависимости от того, какое окно было активно в момент нажатия &lt;i&gt;&amp;lt;Ctrl&amp;gt;-Y&lt;/i&gt;, на том процессе и будет активирован отладчик.&lt;/p&gt;

&lt;p&gt;Эти две комбинации позволяют легко разобраться с простыми ситуациями. Например, с циклическим распространением событий между слушателями. И монитор и отладчик особенно полезны, если учесть, что из-за особенностей устройства VW ждать переполнения стека (и, как следствие, прерывания процесса) можно очень долго. &lt;/p&gt;

&lt;p&gt;&lt;i&gt;Кстати, в ситуации с зацикливанием так же очень помогает &lt;a alt="Описание пакета 'StackOverflow'" href="/2005/01/vw-stackoverflow-shiffmantimeout.html"&gt;инструмент StackOverflow&lt;/a&gt;.&lt;/i&gt;
&lt;/p&gt;

&lt;p&gt;Если же отладчик/монитор не помогают или не доступны, то есть последний довод программиста - "Emergency Evaluator". Вызывается он по комбинации &lt;i&gt;&amp;lt;Ctrl&amp;gt;-&amp;lt;Shift&amp;gt;-Y&lt;/i&gt;. В открывшемся окне можно выполнять ST-код. Набираете выражение и по нажатию &lt;i&gt;&amp;lt;Esc&amp;gt;&lt;/i&gt; оно выполняется. Например, выражение
&lt;pre&gt;ObjectMemory quit&lt;/pre&gt; просто завершит работу системы. Если же вы хотите сохранить образ перед выходом, то можно воспользоваться выражением &lt;pre&gt;ObjectMemory saveAs: 'filename' thenQuit: true.&lt;/pre&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7589481-4641527378976054639?l=www.smalltalk.ru' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.blogger.com/feeds/7589481/4641527378976054639/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=7589481&amp;postID=4641527378976054639' title='Комментарии: 2'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7589481/posts/default/4641527378976054639'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7589481/posts/default/4641527378976054639'/><link rel='alternate' type='text/html' href='http://www.smalltalk.ru/2008/05/vw-sos.html' title='[VW] SOS: спасите наши души'/><author><name>Andrei N.Sobchuck</name><uri>http://www.blogger.com/profile/06558669450434857988</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='16238507229338627901'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7589481.post-4805076147013670112</id><published>2008-03-25T00:29:00.005+02:00</published><updated>2008-05-21T15:59:36.462+03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='new version'/><category scheme='http://www.blogger.com/atom/ns#' term='squeak'/><title type='text'>[Squeak] Вышел Squeak 3.10</title><content type='html'>&lt;center&gt;&lt;img src="/images/squeak310.png" alt="Вышел Squeak 3.10!" /&gt;&lt;/center&gt;

&lt;p&gt;&lt;a alt="Новостная статья о выходе Squeak 3.10" href="http://news.squeak.org/2008/03/21/380/"&gt;Вышел Squeak 3.10&lt;/a&gt;. Основная цель релиза - улучшение качества кода, увеличение покрытия юнит-тестами, модульность.&lt;/p&gt;

&lt;p&gt;&lt;i&gt;PS. На &lt;a alt="Wiki по Squeak 3.10" href="http://wiki.squeak.org/squeak/5919"&gt;wiki-страничке по релизу 3.10&lt;/a&gt; есть &lt;a alt="Список задач из Mantis включённых в 3.10" href="http://wiki.squeak.org/squeak/5934"&gt;список задач из Mantis реализованных в 3.10&lt;/a&gt;.&lt;/i&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7589481-4805076147013670112?l=www.smalltalk.ru' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.blogger.com/feeds/7589481/4805076147013670112/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=7589481&amp;postID=4805076147013670112' title='Комментарии: 3'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7589481/posts/default/4805076147013670112'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7589481/posts/default/4805076147013670112'/><link rel='alternate' type='text/html' href='http://www.smalltalk.ru/2008/03/squeak-squeak-310.html' title='[Squeak] Вышел Squeak 3.10'/><author><name>Andrei N.Sobchuck</name><uri>http://www.blogger.com/profile/06558669450434857988</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='16238507229338627901'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7589481.post-9076206000074821544</id><published>2008-03-25T00:15:00.004+02:00</published><updated>2008-05-21T15:58:54.901+03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='vw'/><category scheme='http://www.blogger.com/atom/ns#' term='new version'/><title type='text'>[VW] Вышел VW 7.6</title><content type='html'>&lt;p&gt;&lt;a href="http://www.cincomsmalltalk.com/scripts/CommunityDownloadPage.ssp"&gt;Доступна для загрузки&lt;/a&gt; свежая некоммерческая версия Cincom Smalltalk. В релиз, как обычно, входят 2 диалекта - VisualWorks 7.6 и ObjectStudio 7.1.3. ObjectStudio 8.1 - win-only диалект на виртуальной машине (ВМ) от VW задерживается, так как проходит сертификацию под Vista.&lt;/p&gt;

&lt;p&gt;Из нововведений: Seaside для VW теперь полностью поддерживаемый Cincom, поддержка Vista (например, исполняемые файлы ВМ &lt;a href="http://msdn2.microsoft.com/en-us/library/ms537359(VS.85).aspx"&gt;подписаны цифровой подписью&lt;/a&gt;), улучшения в поддержке Mac OS X, улучшения в библиотеке классов (например, прерывание процесса по &lt;i&gt;#terminate&lt;/i&gt; вызывает раскрутку стека и корректное выполнение блоков &lt;i&gt;#ensure:&lt;/i&gt;, новые примитивы - 1700, 1701, 1702, 1747 - для расчета хеш-кода у стандартных объектов, у блоков теперь есть &lt;a href="http://www.cincomsmalltalk.com/userblogs/travis/blogView?showComments=true&amp;entry=3355788976"&gt;новый набор методов - &lt;i&gt;#cull:&lt;/i&gt;&lt;/a&gt;, а так же добавилась возможность ограничить время выполнения блока при помощи &lt;i&gt;#valueWithinSecond:orDo:&lt;/i&gt; и пр.), улучшения в GUI (помимо расширения API, уменьшено раздражающее &lt;a href="http://www.smalltalk.ru/articles/flicker-free.html"&gt;мерцание&lt;/a&gt;), улучшения в инструментарии разработчика и, естественно, исправления ошибок.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7589481-9076206000074821544?l=www.smalltalk.ru' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.blogger.com/feeds/7589481/9076206000074821544/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=7589481&amp;postID=9076206000074821544' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7589481/posts/default/9076206000074821544'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7589481/posts/default/9076206000074821544'/><link rel='alternate' type='text/html' href='http://www.smalltalk.ru/2008/03/vw-vw-76.html' title='[VW] Вышел VW 7.6'/><author><name>Andrei N.Sobchuck</name><uri>http://www.blogger.com/profile/06558669450434857988</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='16238507229338627901'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7589481.post-1550102137721929282</id><published>2008-03-19T14:28:00.001+02:00</published><updated>2008-05-21T15:58:35.793+03:00</updated><title type='text'>[Диалекты] Huemul Smalltalk</title><content type='html'>Всё не по-хемульски в этом нехемульском мире.

&lt;a href="http://www.guillermomolina.com.ar/huemul/"&gt;Huemul Smalltalk&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7589481-1550102137721929282?l=www.smalltalk.ru' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.blogger.com/feeds/7589481/1550102137721929282/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=7589481&amp;postID=1550102137721929282' title='Комментарии: 1'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7589481/posts/default/1550102137721929282'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7589481/posts/default/1550102137721929282'/><link rel='alternate' type='text/html' href='http://www.smalltalk.ru/2008/03/huemul-smalltalk.html' title='[Диалекты] Huemul Smalltalk'/><author><name>Boris Berkgaut</name><uri>http://www.blogger.com/profile/01404608686691155818</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='08006410139773372031'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7589481.post-7888125476948494272</id><published>2008-01-10T13:55:00.002+02:00</published><updated>2008-05-21T15:58:02.314+03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='new version'/><category scheme='http://www.blogger.com/atom/ns#' term='gst'/><title type='text'>[GST] GNU Smalltalk 3.0 release</title><content type='html'>&lt;p&gt;
&lt;a href="http://groups.google.com/group/comp.lang.smalltalk/msg/1e39208cfe668b9c"&gt;GNU Smalltalk 3.0 released&lt;/a&gt;. Из изменений:
&lt;ul&gt;
&lt;li&gt;&lt;a href="http://www.gnu.org/software/smalltalk/manual/html_node/Syntax.html#Syntax"&gt;Новый более удобный синтаксис для создания классов&lt;/a&gt; (важно для скриптов). Пример добавления метода в существующий класс:
&lt;pre&gt;
Number extend [
         radiusToArea [
             ^self squared * Float pi
         ]
         radiusToCircumference [
             ^self * 2 * Float pi
         ]
     ]
&lt;/pre&gt;
&lt;/li&gt;
&lt;li&gt;Изменена стартовая последовательность скриптов, что делает кастомизацию более удобной.&lt;/li&gt;
&lt;li&gt;Инструмент для автогенерации документации вошел в поставку.&lt;/li&gt;
&lt;li&gt;Новый &lt;a href="http://smalltalk.gnu.org/faq/84"&gt;DBI-like интерфейс для доступа к БД&lt;/a&gt;; в поставке драйвера для MySql, SQLite, PostgreSQL.&lt;/li&gt;
&lt;li&gt;Усовершенствован формат пакетов (введён так называемый &lt;a href="http://smalltalk.gnu.org/faq/55"&gt;.star формат&lt;/a&gt;).&lt;/li&gt;
&lt;li&gt;У скорено время инициализации, например, "Hello, World" запускается в 5 раз быстрее, чем в версии 2.3.&lt;/li&gt;
&lt;li&gt;Различные улучшения в библиотеке классов. Например, в базовую библиотеку добавлены &lt;a href="http://smalltalk.gnu.org/faq/36"&gt;&lt;i&gt;продолжения&lt;/i&gt;&lt;/a&gt; и &lt;a href="http://smalltalk.gnu.org/faq/47"&gt;&lt;i&gt;генераторы&lt;/i&gt;&lt;/a&gt;, а введение продолжений &lt;a href="http://smalltalk.gnu.org/faq/43"&gt;позволит портировать Seaside&lt;/a&gt; на gst.&lt;/li&gt;
&lt;li&gt;Прочие улучшения в структуре дистрибутива. Например, добавлены такие полезные вещи как реализация комплексных чисел, байдинги к GNUPlot, писалка/читалка формата JSON, новый пакет DebugTools.&lt;/li&gt;
&lt;/ul&gt;
&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7589481-7888125476948494272?l=www.smalltalk.ru' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.blogger.com/feeds/7589481/7888125476948494272/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=7589481&amp;postID=7888125476948494272' title='Комментарии: 1'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7589481/posts/default/7888125476948494272'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7589481/posts/default/7888125476948494272'/><link rel='alternate' type='text/html' href='http://www.smalltalk.ru/2008/01/gst-gnu-smalltalk-30-release.html' title='[GST] GNU Smalltalk 3.0 release'/><author><name>Andrei N.Sobchuck</name><uri>http://www.blogger.com/profile/06558669450434857988</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='16238507229338627901'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7589481.post-4413643810755149639</id><published>2008-01-08T12:16:00.000+02:00</published><updated>2008-01-10T10:06:37.849+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='dolphin'/><title type='text'>[Dolphin] Дельфин 6.1 или "он умер, но затем встал и пошел"</title><content type='html'>&lt;p&gt;Объявлено о начале &lt;a href="http://groups.google.com/group/comp.lang.smalltalk/msg/b2668ae061703b73"&gt;бета тестирования Dolphin 6.1&lt;/a&gt;. Бета-программа будет не закрытой, как раннее, а открытой. Но пока только для обладателей лицензии на Professional.&lt;/p&gt;

&lt;p&gt;Возможно это &lt;a href="http://www.smalltalk.ru/2007/08/dolphin-dolphin-smalltalk-rip.html"&gt;обещанный минорный баг-фикс релиз&lt;/a&gt;. Покрайней мере, из появившегося &lt;a href="http://object-arts.com/content/navigation/home.html"&gt;пояснения ситуации&lt;/a&gt; следует, что единственное, что будет добавлено это поддержка Vista, а вот портирования на .Net или другие платформы не будет.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7589481-4413643810755149639?l=www.smalltalk.ru' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.blogger.com/feeds/7589481/4413643810755149639/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=7589481&amp;postID=4413643810755149639' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7589481/posts/default/4413643810755149639'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7589481/posts/default/4413643810755149639'/><link rel='alternate' type='text/html' href='http://www.smalltalk.ru/2008/01/dolphin-61.html' title='[Dolphin] Дельфин 6.1 или &quot;он умер, но затем встал и пошел&quot;'/><author><name>Andrei N.Sobchuck</name><uri>http://www.blogger.com/profile/06558669450434857988</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='16238507229338627901'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7589481.post-8144645623383468519</id><published>2008-01-01T03:07:00.000+02:00</published><updated>2008-01-10T10:05:46.326+02:00</updated><title type='text'>Bottom line '2007</title><content type='html'>&lt;p&gt;
Не смотря на то, что ушедший 2007 год был отнюдь не высокосный, он всё таки оказался богатым на разнообразные события.
&lt;/p&gt; 

&lt;p&gt;Так диалекты St как исчезали так и появлялись. Пожалуй, наиболее разочаровывающей стала &lt;a href="/2007/08/dolphin-dolphin-smalltalk-rip.html"&gt;&lt;i&gt;новость о прекращении разработки win-only диалекта Dolphin&lt;/i&gt;&lt;/a&gt;. Хотя Dolphin "умер" разработчики считают, что &lt;a href="http://www.object-arts.com/content/blog/2007Sep07.html"&gt;среда по прежнему имеет коммерческую ценность и не хотят открывать код ВМ&lt;/a&gt;. И не смотря на то, что новых версий не будет, &lt;a href="http://www.object-arts.com/content/navigation/products/dce.html"&gt;Dolphin 6 Community Edition&lt;/a&gt; всё так же доступен для загрузки, и &lt;a href="http://www.object-arts.com/content/news/storeNowOpen.html"&gt;Dolphin 6 Professional по прежнему продаётся&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Теперь перейдём к новоявлениям:
&lt;ul&gt;
&lt;li&gt;&lt;a href="http://bergel.eu/athena/?Athena"&gt;&lt;i&gt;The Athena Smalltalk&lt;/i&gt;&lt;/a&gt; - интерпретатор St написанный на java 6. &lt;a href="http://bergel.eu/athena/?Documentation:Overview:Using_Squeak"&gt;В качестве IDE можно использовать Squeak&lt;/a&gt;. Из St есть доступ к java классам и объектам. Правда в документации отмечено, что о скорости речь пока не идёт.&lt;/li&gt;

&lt;li&gt;Следующий новичок - &lt;a href="http://code.google.com/p/syx/"&gt;&lt;i&gt;Smalltalk YX&lt;/i&gt;&lt;/a&gt;, или просто Syx. Среди целей заявлены быстродействие, компактность и &lt;a href="http://code.google.com/p/syx/wiki/Examples"&gt;лёгкость интеграции с С/C++&lt;/a&gt;.&lt;/li&gt;

&lt;li&gt;Новый диалект с красивым названием &lt;a href="http://www.guillermomolina.com.ar/huemul/"&gt;Huemul Smalltalk&lt;/a&gt;. Целей и особенностей создания диалекта я не знаю.&lt;/li&gt;

&lt;li&gt;
От Дена Инголса появился исследовательский проект &lt;a href="http://research.sun.com/projects/lively/index.html"&gt;&lt;i&gt;Lively Kernel&lt;/i&gt;&lt;/a&gt; - правда это совсем не Smalltalk, а реализация &lt;a href="http://ru.smalltalk.wikia.com/wiki/Morphic"&gt;Morphic&lt;/a&gt; на JavaScript.&lt;/ui&gt;
&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;
&lt;p&gt;
Ну, и, поскольку диалекты St иногда просто тихо "растворяются", то можно проверить статус различных уже известных диалектов:
&lt;ul&gt;
&lt;li&gt;&lt;a href="http://www.cincomsmalltalk.com/userblogs/cincom/blogView"&gt;Cincom Smalltalk&lt;/a&gt; - под этим названием спрятались сразу два диалекта - VisualWorks &amp; ObjectStudio. С первым всё понятно - стабильно два раза в год выходят новые версии. Не смотря на то, что долгоожидаемого &lt;a href="http://www.smalltalk.ru/2007/09/vw-widgetry.html"&gt;Widgetry (он же Pollock) не будет&lt;/a&gt; и то, что &lt;a href="http://www.smalltalk.ru/2007/01/blog-post.html"&gt;несколько ведущих специалистов перешло к Джиладу Брахе&lt;/a&gt;, VW развивается уверенно. ObjectStudio - второй диалект активно поддерживаемый Cincom. Это win-only диалект предназначенный для клепания клиентов к БД. ВМ от OS это был интерпретатор с поддержкой win-нитей. Но &lt;a href="http://www.cincomsmalltalk.com/userblogs/cincom/blogView?content=os8_release"&gt;в октябре вышла окончательная версия OS 8&lt;/a&gt;. От предыдущих версий OS 8 отличается тем, что использует ВМ от VisualWorks. Пользователи OS получили более быструю платформу, а разработчики в Cincom избавились от необходимости поддерживать две разные ВМ.&lt;/li&gt;
&lt;li&gt;&lt;a href="http://squeak.org/"&gt;Squeak&lt;/a&gt;. С ним всё хорошо. Помимо новых версий среды под открытой лицензией появилась книга "&lt;a href="http://squeakbyexample.org/"&gt;Squeak By Example&lt;/a&gt;"; &lt;a href="http://www.netjam.org/projects/spoon/"&gt;Spoon (проект по созданию минимально возможного образа, который затем будет "донаращивать" себя до нужной функциональности)&lt;/a&gt; так же &lt;a href="http://www.netjam.org/projects/spoon/the%20Spoon%20book.pdf"&gt;начал обзаводиться книгой&lt;/a&gt;; &lt;a href="http://lists.squeakfoundation.org/pipermail/exupery/2007-December/000247.html"&gt;развивается компилятор в исполняемый код - Exupery&lt;/a&gt;. В общем &lt;a href="http://news.squeak.org/2007/02/04/recent-squeak-packages-releases-2/"&gt;жизнь разработчиков бурлит&lt;/a&gt; и всё заметить тяжело.&lt;/li&gt;
&lt;li&gt;&lt;a href="http://www.ambrai.com/"&gt;Ambrai&lt;/a&gt; - коммерческий Mac-only диалект. На сайте новостей нет с февраля, но в форуме разработчики уверяют, что работают на новой версией.&lt;/li&gt;
&lt;li&gt;&lt;a href="http://www.fscript.org/"&gt;F-Script&lt;/a&gt; - еще один Mac-only диалект, победитель "Apple Design Awards 2006" в номинации "Best Mac OS X Developer Tool". Предназначен для скриптования. В отличии от Ambrai - открытый. Интересен не только тем, что есть куча примеров интеграции со сторонними приложениями, но и тем, что &lt;a href="http://smalltalk.org/articles/article_20040920_a4.html"&gt;расширяет синтаксис для работы с массивами объектов&lt;/a&gt; (кстати, если интересно - &lt;a href="http://www.cincomsmalltalk.com/publicRepository/HigherOrderMessaging.html"&gt;HigherOrderMessaging&lt;/a&gt;). Готовится к выходу &lt;a href="http://pmougin.wordpress.com/2007/12/04/f-script-20-64-bit/"&gt;64-битный F-Script 2&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;&lt;a href="http://www.instantiations.com/VAST/prod/vast.html"&gt;VAST&lt;/a&gt;. В 2007 году Instantiations выдала три минорных релиза (например, появилась поддержка 64 битных Vista &amp; Linux).&lt;/li&gt;
&lt;li&gt;&lt;a href="http://www.gemstone.com/products/smalltalk/"&gt;Gemstone/S&lt;/a&gt; - это диалект ST и одновременно объектный сервер (обычно это называют OODB). Некоммерческие версии можно найти в дистрибутивах Cincom Smalltalk. &lt;a href="http://www.smalltalk.ru/2007/05/gemstone-gemstone.html"&gt;2007 год ознаменовался появлением инициативы GLASS&lt;/a&gt; - выпуском бесплатной для коммерческого использования версии Gemstone/S для разработки web-приложений. В рамках GLASS поддерживатся Seaside и осуществляется портирование различного инструментария со Squeak (и вообще, ведуться работы по облегчению портирования на уровне исходных текстов со Squeak на Gemstaone/S).&lt;/li&gt;
&lt;li&gt;&lt;a href="http://www.objectconnect.com/"&gt;Smalltalk MT&lt;/a&gt; - диалект основной особенностью которого является тесная интеграция с win32, поддержка "родных" нитей  и компиляция непосредственно в исполняемый код. Новостей от него не много, но в марте 2007 года вышла очередная версия - &lt;a href="http://www.objectconnect.com/release_downloads.htm"&gt;ST/MT 5.5&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;&lt;a href="http://www.smalltalk-x.de/en/home"&gt;Smalltalk/X&lt;/a&gt;. Кроссплатформенный и бесплатный даже для коммерческого использования, обширная документация, доступен исходный код St библиотек, но закрыт доступ к исходным кодам ВМ (хотя есть доступ к их CVS репозиторию, но что там есть я не смотрел). Из основных особенностей - возможность компиляции в исполняемый код, возможность предкомпиляции части библиотек в исполняемый код, лёгкость интеграции с С-библиотеками. Как по мне, то весьма интересный диалект, жаль что на него никто не обращает внимания. В 2007 году тихой сапой вышло два минорных релиза. Последняя версия - &lt;a href="http://www.smalltalk-x.de/download/stx536"&gt;ST/X 5.3.6&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;&lt;a href="http://smalltalk.gnu.org/"&gt;GNU Smalltalk&lt;/a&gt; - вот-вот должна выйти версия 3.0, &lt;a href="http://smalltalk.gnu.org/development/roadmap"&gt;основные новшества в которой&lt;/a&gt; - новый синтаксис для дефиниции классов, поддержка генераторов, сокращение потребления памяти если несколько ВМ запущено из одного образа.&lt;/li&gt;
&lt;li&gt;&lt;a href="http://vistasmalltalk.wordpress.com/"&gt;Vista Smalltalk он же Smalltalk/DLR&lt;/a&gt; - молодой диалект. Реализован хитро - внутри интерпретатор лиспа на котором и написан St. Интепретатор лиспа (а значит и сам Smalltalk/DLR) работает на .NET и (сюрприз!) Flash. Основное предназначение - создания приложений в броузере.&lt;/li&gt;
&lt;li&gt;&lt;a href="http://www.smallscript.org/"&gt;SmallScript&lt;/a&gt;, он же S#. &lt;a href="http://www.bitwisemag.com/2/S-Smalltalk-The-Next-Generation"&gt;По утверждению автора - Девида Симонса&lt;/a&gt; - разработка не то что бы прекращена, но нам вернее думать, что этот интересный диалект давно уж как умер. Хотя...&lt;/li&gt;
&lt;li&gt;&lt;a href="http://www.smalltalk.org/versions/OOVM.html"&gt;OSVM (в девичестве OOVM)&lt;/a&gt; - разрабатывался как встраиваемый диалект работающий на голом железа. Его купила Esmertec и некоторое время пыталась &lt;a href="http://blog.quenta.org/2006/04/why-neptune.html"&gt;сделать язык более java-похожим (Neptune)&lt;/a&gt;. Даже сделали в ВМ массивы 0-based вместо традиционных "смолточных" 1-based. В 2006 все не профильные (не связанные с java) проекты в Esmertec закрыли, офис в Дании разогнали, а сам продукт продали японцам в Esmertec Japan. И благодаря Google Translate мы можем узнать, что &lt;a href="http://translate.google.com/translate?u=http%3A%2F%2Fosvm.jp%2F&amp;langpair=jp|en&amp;hl=en&amp;ie=UTF8"&gt;OSVM вполне себе живёт и развивается&lt;/a&gt;. Новые &lt;a href="http://osvm.jp/download.html"&gt;версии штампуют&lt;/a&gt; как горячие пирожки. Но только для японцев и с Neptune в качестве языка.&lt;/li&gt;
&lt;li&gt;&lt;a href="http://www.littlesmalltalk.org/"&gt;LittleSmalltalk&lt;/a&gt; - как ни странно, но "оно живое!".&lt;/li&gt;
&lt;/ul&gt;
Никого не забыл?
&lt;p&gt;

&lt;p&gt;Добавлю, что в развити диалектов в этом году проявилось 2 общих тенденции. Первая, это осовременивание ВМ - поддержка Unicode и 64-битность. Вторая тенденция - все хотят поддерживать &lt;a href="http://seaside.st/"&gt;Seaside&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;В общем, можно сказать, что развитие диалектов есть. Некоторые даже считают, что популярность St была достигла дна и &lt;a href="http://pmougin.wordpress.com/2007/12/06/is-the-smalltalk-community-growing/"&gt;дальше может быть только рост&lt;/a&gt;.
&lt;/p&gt;

&lt;p&gt;Теперь коротко рассмотрим смежные области.&lt;/p&gt;

&lt;p&gt;&lt;a href="http://croquetconsortium.org/"&gt;Croquet&lt;/a&gt;. Вышел &lt;a href="http://opencroquet.org/index.php/Downloads"&gt;Croquet SDK 1.0&lt;/a&gt;; появился коммерческий продукт на Croquet - &lt;a href="http://www.smalltalk.ru/2007/03/croquet-qwaq-forums.html"&gt;Qwaq Forums&lt;/a&gt;; &lt;a href="http://www.intel.com/pressroom/archive/releases/20070920corp_a.htm"&gt;Croquet и Intel&lt;/a&gt;; &lt;a href="http://croquetweak.blogspot.com/2006/01/croquet-tweak-at-nasa.html"&gt;Croquet и NASA&lt;/a&gt;; &lt;a href="http://nsuslovi.blogspot.com/2007/08/krestianstvoigrishe-on-road.html"&gt;Croquet и искуство&lt;/a&gt;, &lt;a href="http://community.livejournal.com/croquet_ru/"&gt;Croquet по-русски&lt;/a&gt;.
&lt;/p&gt;

&lt;p&gt;В ноябре началось реальное производство &lt;a href="http://laptop.org/index.ru.html"&gt;OLPC &lt;/a&gt;и уже &lt;a href="http://www.homepc.ru/news/341367/"&gt;есть заказы из Уругвая, Монголии, Перу, Мексики&lt;/a&gt;. Одним из продуктов устанавливаемых на OLPC является &lt;a href="http://squeakland.org/"&gt;EToys&lt;/a&gt;. Что интересно, в начале предполагалось реализовать версию E-Toys на питоне и не связываться со Squeak вообще. И &lt;a href="http://wiki.laptop.org/go/Etoys"&gt;вот итог&lt;/a&gt;. Тут же продолжим тему образования: зарелизены &lt;a href="http://scratch.mit.edu/"&gt;Scratch&lt;/a&gt;, &lt;a href="http://www.comikit.se/"&gt;ComiKit&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Всё ближе к релизу &lt;a href="http://sophieproject.org/"&gt;Sophie&lt;/a&gt; - инструмент для создания мультимедийных книг. Кстати, об приложениях на Smalltalk. Сейчас складывается такая ситуация, что приложения на Smalltalk разрабатываются для внутренних нужд и широко не известны. Тем более приятно когда &lt;a href="http://www.cwhonors.org/CaseStudy/viewCaseStudy.asp?Username=SatelliteForces&amp;NominationID=232"&gt;награждают "серийную" программу&lt;/a&gt; (VW). И еще о наградах: &lt;a href="http://www.esug.org/conferences/15thinternationalsmalltalkjointconference2007/innovationtechnologyawards/winnersandnominations/"&gt;номинанты и победители ESUG 2007&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;&lt;a href="http://news.squeak.org/2007/10/28/seaside-28-released/"&gt;Seaside - версия 2.8&lt;/a&gt;. Как я уже говорил, Seaside - для коммерческих диалектов это "must have". Примером применения Seaside для всех являются &lt;a href="http://dabbledb.com/"&gt;DabbleDB &lt;/a&gt;и &lt;a href="http://blog.dabbledb.com/2007/08/introducing-dab.html"&gt;DabbleDo&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;А если вам для создания web-приложений нужно что-то более традиционное, то &lt;a href="http://www.aidaweb.si/"&gt;к вашим услугам AIDA&lt;/a&gt;. Тем более, что как раз &lt;a href="http://www.aidaweb.si/news070822-aida-54-released.html"&gt;вышла новая версия AIDA под разные диалекты&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;От продуктов перейдём к нематериальным событиям: &lt;a href="http://stic.st/sts2007/"&gt;Smalltalk Solutions 2007&lt;/a&gt;, &lt;a href="http://www.esug.org/conferences/niallsreport/"&gt;ESUG 2007&lt;/a&gt;, &lt;a href="http://news.squeak.org/2007/12/18/the-first-smalltalk-conference-in-argentina/"&gt;1-я конференция по Smalltalk в Аргентине&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Под конец о &lt;a href="http://www.smalltalk.ru"&gt;Сайте&lt;/a&gt; - он действительно пребывает в некотором упадке, но окончательно списывать со счетов его пока не нужно.&lt;/p&gt;

&lt;p&gt;Опять же, если я забыл что-то интересное, то пишите в коменты. Хух. 2007 год всё!&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7589481-8144645623383468519?l=www.smalltalk.ru' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.blogger.com/feeds/7589481/8144645623383468519/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=7589481&amp;postID=8144645623383468519' title='Комментарии: 2'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7589481/posts/default/8144645623383468519'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7589481/posts/default/8144645623383468519'/><link rel='alternate' type='text/html' href='http://www.smalltalk.ru/2008/01/bottom-line-2007.html' title='Bottom line &apos;2007'/><author><name>Andrei N.Sobchuck</name><uri>http://www.blogger.com/profile/06558669450434857988</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='16238507229338627901'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7589481.post-7568545925853283748</id><published>2007-11-19T15:06:00.000+02:00</published><updated>2007-11-19T15:21:29.229+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='vw'/><category scheme='http://www.blogger.com/atom/ns#' term='seaside'/><title type='text'>[VW] Поиск по публичному StORE-репозиторию</title><content type='html'>&lt;p&gt;Г-н Holger Kleinsorgen создал on-line приложение - &lt;a title="Описание Storelight" href="http://www.smallish.org/smalltalk/storelight.html"&gt;Storelight&lt;/a&gt; - для поиска по &lt;a href="http://www.cincomsmalltalk.com/CincomSmalltalkWiki/PostgreSQL+Access+Page"&gt;публичному StORE-репозиторию&lt;/a&gt;.
&lt;/p&gt;

&lt;p&gt;Написано на Seaside. Поисковый движок Apache Lucene.&lt;/p&gt;

&lt;p&gt;Сырцы Storelight можно &lt;a title="Демо Storelight" href="http://www.smallish.org:7777/seaside/Storelight"&gt;найти в публичном репозитории используя сам Storelight&lt;/a&gt;.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7589481-7568545925853283748?l=www.smalltalk.ru' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.blogger.com/feeds/7589481/7568545925853283748/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=7589481&amp;postID=7568545925853283748' title='Комментарии: 4'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7589481/posts/default/7568545925853283748'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7589481/posts/default/7568545925853283748'/><link rel='alternate' type='text/html' href='http://www.smalltalk.ru/2007/11/vw-store.html' title='[VW] Поиск по публичному StORE-репозиторию'/><author><name>Andrei N.Sobchuck</name><uri>http://www.blogger.com/profile/06558669450434857988</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='16238507229338627901'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>4</thr:total></entry></feed>