Many folks consider it to be the killer app for Smalltalk, much like
Ruby on Rails is for Ruby.
Currently, Seaside is available for Squeak and VisualWorks. It has not
been ported to other dialects such as VAST. We would like to see it
ported to VAST. To that end, we are issuing a challenge to the VAST user
community to port Seaside to VAST. To make it worth your while, we are
offering a reward of a full license to VAST and all of our add-on
products (a $9,595 value) to the first *five* people who successfully
and independently port Seaside to VAST (we want to make sure that anyone
who gets it working is rewarded, not just the first to finish).
The Seaside web site states that "Many Smalltalk VMs do not support the
stack-copying techniques Seaside uses to implement backtracking".
According to the site, this includes VAST. Assuming that this is true,
you may need to be creative and come up with slightly different
implementations based on what VAST can do. The most important criteria
is that the public API surfaced by Seaside works as specified. Tutorial
examples should also work unmodified.
-Eric Clayberg
Sr. Vice President of Product Development
Instantiations, Inc.
mailto:clay...@instantiations.com
http://www.instantiations.com/vast
--
Отправлено через сервер Форумы@mail.ru - http://talk.mail.ru
b1 := [
какойТоКод1.
result := self call: (КакойТоНаследникMWComponent new
model: бизнесОбъект;
yourself
).
какойТоКод2.
]
t1 := b1 fork.
Выглядит достаточно безобидно. Что внутри?
Нить t1 исполняется приблизительно до "self call: " и
приостанавливается. Большая часть "внутри" "self call:" выполняется в
какой-то другой нити (нитях). Затем "какойТоКод2" должен выполняться
вновь в нити t1.
Сперва кажется, что всё довольно просто. Внутри "self call:" происходит
либо "t1 suspend", либо "[ ... ] fork". Когда-то позднее (при получении
какого-то http-запроса, очевидно), произойдёт "t1 resume".
Проблема в том, что b1 fork разрешается запускать только один раз, а
resume надо вызвать из одной точки неограниченное количество раз. Так
что "какойТоКод1" должен сработать один раз, а "какойТоКод2" неизвестное
количество раз. Как это можно сделать без копирования стека? А если
нельзя, портирование Seaside просто невозможно.
"Victor Metelitsa" <v...@cssc.tat.ru> wrote in message
news:e39cfg$b4g$1...@host.talk.ru...