Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

VAST Seaside Challenge

4 views
Skip to first unread message

Victor Metelitsa

unread,
May 2, 2006, 12:32:30 AM5/2/06
to
Seaside is a framework for developing sophisticated web applications in
Smalltalk.

http://seaside.st/

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.

http://seaside.st/Tutorial/

-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

Victor Metelitsa

unread,
May 3, 2006, 12:44:56 AM5/3/06
to
Получить "нахаляву" VAST сильно хочется. Но тут есть маленькая-маленькая
загвоздка ("Many Smalltalk VMs do not support the stack-copying
techniques Seaside uses to implement backtracking"). Рассмотрим пример:

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 просто невозможно.

Maxim Annenkov

unread,
May 10, 2006, 10:05:14 AM5/10/06
to
А где бы взять его FileOut ?

"Victor Metelitsa" <v...@cssc.tat.ru> wrote in message
news:e39cfg$b4g$1...@host.talk.ru...

0 new messages