Скриптовый(?) язык с нативными потоками
От: Mr.Cat  
Дата: 20.02.10 22:54
Оценка:
Разыскивается, возможно, немного странная вещь: имплементация любого языка с поддержкой нативных потоков. Пожелания:
— Собственно, нативные потоки.
— Открытые исходники, должны допускать внесение изменений и работать в windows (хуже) или linux (лучше).
— Не слишком сложный код реализации, чтобы в нем реально было разобраться без каких-то специфичных познаний. Было бы здорово услышать комментарий в духе "искал (делал) X, потратил N времени".
— Желательно — интерпретатор или компилятор в байт-код (дальнейшая судьба байткода безразлична).
— Императивная направленность (а-ля lua, python). Функциональщина и иммутабельность — скорее минус.
— Легкие потоки, корутины, csp, макросы, строгая типизация, монады-хренады и прочая муть допустимы, если не мешаются под ногами.
— Хотелось бы, чтобы не слишком тормозная. По идее, что-то на уровне lua сойдет.

В итоге разыскиваются lua или python с нативными потоками (поскольку я не знаю, как в них обстоят дела с сабжем — решил поинтересоваться тут, вдруг кто чего подскажет). Цель — внесение некоторых изменений в имплементацию.
Re: Скриптовый(?) язык с нативными потоками
От: Critical Error ICQ: 123736611
Дата: 21.02.10 00:06
Оценка:
Здравствуйте, Mr.Cat, Вы писали:

MC>В итоге разыскиваются lua или python с нативными потоками (поскольку я не знаю, как в них обстоят дела с сабжем — решил поинтересоваться тут, вдруг кто чего подскажет). Цель — внесение некоторых изменений в имплементацию.


Ну так в Python модуль threading как раз реализует нативные потоки. Только в Python есть GIL, который не позволяет выполнять одновременно инструкции самого языка. Хотя можно в своем расширении на C освободить GIL, но тогда уже нельзя будет дергать Python API.
Re[2]: Скриптовый(?) язык с нативными потоками
От: Mr.Cat  
Дата: 21.02.10 00:26
Оценка:
Здравствуйте, Critical Error, Вы писали:
CE>Ну так в Python модуль threading как раз реализует нативные потоки. Только в Python есть GIL, который не позволяет выполнять одновременно инструкции самого языка.
Вот как раз GIL и хотелось бы отправить в печку. Чтобы в разных нативных потоках выполнялся код на самом языке.
Re: Скриптовый(?) язык с нативными потоками
От: Mr.Cat  
Дата: 21.02.10 00:27
Оценка:
Здравствуйте, Mr.Cat, Вы писали:
MC>- Открытые исходники, должны допускать бескорыстное внесение изменений
selffix
Re: Скриптовый(?) язык с нативными потоками
От: FR  
Дата: 21.02.10 05:49
Оценка: 10 (1)
Здравствуйте, Mr.Cat, Вы писали:

MC>В итоге разыскиваются lua или python с нативными потоками (поскольку я не знаю, как в них обстоят дела с сабжем — решил поинтересоваться тут, вдруг кто чего подскажет). Цель — внесение некоторых изменений в имплементацию.


Кажется AngelScript http://www.angelcode.com/angelscript/features.asp проблем подобных GIL не имеет, но я не уверен очень давно его смотрел.
Re: Скриптовый(?) язык с нативными потоками
От: FR  
Дата: 21.02.10 05:56
Оценка: 10 (1)
Здравствуйте, Mr.Cat, Вы писали:

MC>В итоге разыскиваются lua или python с нативными потоками (поскольку я не знаю, как в них обстоят дела с сабжем — решил поинтересоваться тут, вдруг кто чего подскажет). Цель — внесение некоторых изменений в имплементацию.


Еще ctalk посмотри http://www.garret.ru/ctalk.html
Re[3]: Скриптовый(?) язык с нативными потоками
От: Critical Error ICQ: 123736611
Дата: 21.02.10 05:59
Оценка:
Здравствуйте, Mr.Cat, Вы писали:

MC>Вот как раз GIL и хотелось бы отправить в печку. Чтобы в разных нативных потоках выполнялся код на самом языке.


Ну насколько я понимаю, довольно трудно сделать скриптовый язык без GIL. Если не блокировать реальное параллельное выполнение, то можно необратимо повредить структуру объектов в памяти языка. Обычно это ведет к падению. Когда-то я писал расширение на C++ для Python. Тогда я еще не знал про GIL. Так вот эти мои эксперименты заканчивались эпическими крашами всей системы. Опять же с GC проблемы... Вообще питонисты когда им надо делать реально-параллельную работу спавнят еще один процесс интерпретатора и взаимодействуют друг с другом через какой-нибудь IPC.

В общем чтобы не было проблем со структурой объектов в памяти надо смотреть в сторону языков с изолированными потоками. То есть там где объект будучи переданным другому потоку не разделяется, а полностью копируется. Там же должен быть свой менеджер кучи и свой GC на поток. Может еще быть какое-нибудь встроенное средство для обмена сообщениями. Честно сказать я такого языка не знаю

Ну или в корне менять подход при работе с тредами. Можно посмотреть в сторону языков для БД. Например как оно сделано в PL/SQL?

В Erlang разработчики все грозились сделать нативные треды. Вроде как деже сделали, но что у них получилось я не в курсе. Когда я последний раз работал с Erlang-ом, заметил интересную особенность при работе с драйвером ODBC. Тот самый драйвер отпочковывал некий процесс odbcserver.exe через который и проходили все блокирующие общения с базами данных. Вот такая вот нативная параллельность...
Re: Скриптовый(?) язык с нативными потоками
От: c-smile Канада http://terrainformatica.com
Дата: 21.02.10 06:50
Оценка: 10 (1)
Здравствуйте, Mr.Cat, Вы писали:

MC>В итоге разыскиваются lua или python с нативными потоками (поскольку я не знаю, как в них обстоят дела с сабжем — решил поинтересоваться тут, вдруг кто чего подскажет). Цель — внесение некоторых изменений в имплементацию.


А какие проблемы вообще запустить VM в native thread?
Или нужны threading примитивы встроенные в язык?

Если второе то язык имени меня такое имеет: http://c-smile.sourceforge.net/

Вот например:
http://c-smile.sourceforge.net/samples/threads.htm

Примитивы thread (объект) и synchronized(mutex) {}
Re: Скриптовый(?) язык с нативными потоками
От: LuciferSaratov Россия  
Дата: 21.02.10 07:15
Оценка: 1 (1)
Здравствуйте, Mr.Cat, Вы писали:

MC>В итоге разыскиваются lua или python с нативными потоками (поскольку я не знаю, как в них обстоят дела с сабжем — решил поинтересоваться тут, вдруг кто чего подскажет). Цель — внесение некоторых изменений в имплементацию.


Ну, TCL например. Насколько я знаю, там у него по интерпретатору на поток, поэтому без глобального лока.
Re[2]: Скриптовый(?) язык с нативными потоками
От: Critical Error ICQ: 123736611
Дата: 21.02.10 08:03
Оценка:
Здравствуйте, c-smile, Вы писали:

CS>А какие проблемы вообще запустить VM в native thread?

CS>Или нужны threading примитивы встроенные в язык?

CS>Если второе то язык имени меня такое имеет: http://c-smile.sourceforge.net/


CS>Вот например:

CS>http://c-smile.sourceforge.net/samples/threads.htm

CS>Примитивы thread (объект) и synchronized(mutex) {}


А можно поподробнее об многопоточности в Вашем скриптовом языке?

Как например у Вас реализована работа с GC. Вот предположим объект передается в другой тред и получаются 2 ссылки из разных потоков? Или делается полное копирование объекта?

Или вот если объект видят одновременно два треда, то каким образом удается его не порушить? Блокируется каждый объект в отдельности? Или синхронизацию нужно делать также как и в С++, вручную?
Re[2]: Скриптовый(?) язык с нативными потоками
От: alsemm Россия  
Дата: 21.02.10 09:47
Оценка:
Здравствуйте, c-smile, Вы писали:

CS>Вот например:

CS>http://c-smile.sourceforge.net/samples/threads.htm

CS>Примитивы thread (объект) и synchronized(mutex) {}

А conditional есть?
Re: Скриптовый(?) язык с нативными потоками
От: . Великобритания  
Дата: 21.02.10 10:12
Оценка:
On 21/02/2010 00:54, Mr.Cat wrote:

> В итоге разыскиваются lua или python с нативными потоками (поскольку я

> не знаю, как в них обстоят дела с сабжем — решил поинтересоваться тут,
> вдруг кто чего подскажет). Цель — внесение некоторых изменений в
> имплементацию.
А чем плох JVM? В принципе даже сама java в каком-то смысле поддаётся скриптованию. А можно и какой-нибудь groovy.
Posted via RSDN NNTP Server 2.1 beta
но это не зря, хотя, может быть, невзначай
гÅрмония мира не знает границ — сейчас мы будем пить чай
Re: Скриптовый(?) язык с нативными потоками
От: Mr.Cat  
Дата: 21.02.10 11:21
Оценка:
Здравствуйте, Mr.Cat, Вы писали:
MC>- Собственно, нативные потоки.
Ах, да, забыл главное — шаред мемори между потоками.
Re[4]: Скриптовый(?) язык с нативными потоками
От: Mr.Cat  
Дата: 21.02.10 11:35
Оценка:
Здравствуйте, Critical Error, Вы писали:
CE>Ну насколько я понимаю, довольно трудно сделать скриптовый язык без GIL. Если не блокировать реальное параллельное выполнение, то можно необратимо повредить структуру объектов в памяти языка.
Ну это и в нескриптовых языках можно устроить. А можно избежать.

CE>Опять же с GC проблемы...

Ну вот их тоже быть не должно.

CE>Вообще питонисты когда им надо делать реально-параллельную работу спавнят еще один процесс интерпретатора и взаимодействуют друг с другом через какой-нибудь IPC.

CE>В общем чтобы не было проблем со структурой объектов в памяти надо смотреть в сторону языков с изолированными потоками. То есть там где объект будучи переданным другому потоку не разделяется, а полностью копируется. Там же должен быть свой менеджер кучи и свой GC на поток.
Нет, нужна именно шаред мемори, я просто забыл это в явном виде написать.

CE>Ну или в корне менять подход при работе с тредами. Можно посмотреть в сторону языков для БД. Например как оно сделано в PL/SQL?

Ненене, Дэвид Блейн.

CE>В Erlang разработчики все грозились сделать нативные треды. Вроде как деже сделали, но что у них получилось я не в курсе. Когда я последний раз работал с Erlang-ом, заметил интересную особенность при работе с драйвером ODBC. Тот самый драйвер отпочковывал некий процесс odbcserver.exe через который и проходили все блокирующие общения с базами данных. Вот такая вот нативная параллельность...

Тут
Автор:
Дата: 09.02.10
как раз обсуждались нативные потоки и асинхронность в эрланге. А odbcserver.exe вполне может относиться к деталям реализации odbc-драйвера и к эрланту относиться весьма опосредованно.
Re[2]: Скриптовый(?) язык с нативными потоками
От: Mr.Cat  
Дата: 21.02.10 11:40
Оценка:
Здравствуйте, c-smile, Вы писали:
CS>А какие проблемы вообще запустить VM в native thread?
CS>Или нужны threading примитивы встроенные в язык?
Вроде того. А также шаред мемори между потоками.

CS>Если второе то язык имени меня такое имеет: http://c-smile.sourceforge.net/

CS>http://c-smile.sourceforge.net/samples/threads.htm
CS>Примитивы thread (объект) и synchronized(mutex) {}
Хм... вспоминая темы про htmlayout, там внурях хардкорный C++
Автор: yarus23
Дата: 23.10.08
?
А вообще, спасибо, посмотрю.
Re[2]: Скриптовый(?) язык с нативными потоками
От: Mr.Cat  
Дата: 21.02.10 11:41
Оценка:
Здравствуйте, LuciferSaratov, Вы писали:
LS>Ну, TCL например. Насколько я знаю, там у него по интерпретатору на поток, поэтому без глобального лока.
А память между потоками разделяемая?
Re[2]: Скриптовый(?) язык с нативными потоками
От: Mr.Cat  
Дата: 21.02.10 11:46
Оценка:
Здравствуйте, ., Вы писали:
.>А чем плох JVM?
Да вроде ничем не плох. По идее, нечто компилироемое в jvm или clr как раз подошло бы, главное чтобы в коде нечта можно было разобраться.
Re[5]: Скриптовый(?) язык с нативными потоками
От: Critical Error ICQ: 123736611
Дата: 21.02.10 11:54
Оценка:
Здравствуйте, Mr.Cat, Вы писали:

MC>Нет, нужна именно шаред мемори, я просто забыл это в явном виде написать.


Ну, просто очень редко встречаются алгоритмы, где нельзя обойтись без Shared Memory... И такие алгоритмы обычно пишутся на чем-то более низкоуровневом... Эта фича действительно вам так нужна, или просто привычка?
Re[6]: Скриптовый(?) язык с нативными потоками
От: Mr.Cat  
Дата: 21.02.10 12:01
Оценка:
Здравствуйте, Critical Error, Вы писали:
CE>Ну, просто очень редко встречаются алгоритмы, где нельзя обойтись без Shared Memory... И такие алгоритмы обычно пишутся на чем-то более низкоуровневом... Эта фича действительно вам так нужна, или просто привычка?
Фича нужна, без нее никак.
Re[2]: Скриптовый(?) язык с нативными потоками
От: c-smile Канада http://terrainformatica.com
Дата: 21.02.10 18:05
Оценка:
Здравствуйте, Mr.Cat, Вы писали:

MC>Ах, да, забыл главное — шаред мемори между потоками.


А что точно такое "шаред мемори между потоками"?
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.