wizzard: (Default)
wizzard ([personal profile] wizzard) wrote2009-05-16 12:04 am

в поисках виртуальной машины

пока меня поразило устройство двух виртуальных машин

- Macromedia/Adobe Flash AVM2 (эволюция превратила маленькую кавайную зверушку в огромного хаотичного монстра)
- виртуальная машина PyPy (концептуально и круто, и, эмм, ест моск. очень сильно ест моск)

что ищется в первую очередь:

- code serializaltion [a.k.a. serialize(eval(‘lambda x, y: x+y’)) ]
- thread serialization (tasklets, threadlets, кто как называет)
- контроль над исполнением потоков (ручной scheduler и\или управляемое preemptive multitasking)
- наличие интерпретатора\компилятора языка высокого уровня под данную VM
- работающего под ней же ;)

что было бы прикольно иметь:

- в идеале – замкнутость, т.е. чтобы внутри этой VM можно было запустить экземпляр такой же VM, но это не обязательно
- code instrumentation (как минимум _pentry/_pexit, в идеале – встроенный profiling)
- встроенный debugger было бы без сомнения круто, но в случае чего его можно и дописать
- еще интересна рефлексия программы и\или рефлексия самой VM.
- быстродействие вторично, но все же лучше, чтобы скорость не отличалась более чем в 1000 раз от кода на C



UPD: еще одно применение thread serialization - для ускорения запуска тяжелых программ (fread+memcpy явно быстрее загрузки чего-либо, даже тривиального), вспомнил после прочтения http://zhengxi.livejournal.com/73471.html

[identity profile] jtootf.livejournal.com 2009-05-15 10:04 pm (UTC)(link)
большинству требований удовлетворяет любая VM, расчитанная на гомоиконный язык. т.е. всякие LISP-машины, REBOL, Tcl. если я, конечно, правильно понимаю критерии

[identity profile] jtootf.livejournal.com 2009-05-15 10:43 pm (UTC)(link)
а откуда такая задача вообще? зачем сериализовать поток?

[identity profile] jtootf.livejournal.com 2009-05-15 11:01 pm (UTC)(link)
ZeroC ICE. и Erlang VM, у него перекидывать задачи по нодам вроде не проблема

[identity profile] jtootf.livejournal.com 2009-05-15 11:41 pm (UTC)(link)
всё равно не понял мысли. жду утреннего пояснения на трезвую голову ;)

[identity profile] jtootf.livejournal.com 2009-05-17 10:54 am (UTC)(link)
советую посмотреть на идею "науки" в eve online ;) оттуда можно кой-какие идеи утянуть, чтобы не получить полного хаоса дванольности

[identity profile] jtootf.livejournal.com 2009-05-15 11:41 pm (UTC)(link)
100к потоков выдержит и то, и то. проверено :) правда, с ICE в этом плане я работал больше, Erlang только щупал, но есть у кого посмотреть на высоконагруженные приложения на нём

[identity profile] jtootf.livejournal.com 2009-05-15 11:04 pm (UTC)(link)
но вообще с моей колокольни такие задачи проще решаются подходящим железом. достаточно хорошего объёма энергонезависимой памяти с какой-нибудь IFS, и хороший механизм работы с shared memory

[identity profile] jtootf.livejournal.com 2009-05-15 11:44 pm (UTC)(link)
не отсекает. с чего бы?

[identity profile] jtootf.livejournal.com 2009-05-16 12:09 am (UTC)(link)
зачем пользователям? мы ведь про сервера говорим вроде

[identity profile] jtootf.livejournal.com 2009-05-16 12:22 am (UTC)(link)
можно пример описания системы целиком? что, где, у кого, и почему?

а то чем дальше, тем меньше понятно

[identity profile] 109.livejournal.com 2009-05-16 07:31 am (UTC)(link)
миллион в секунду - это дофига. но не верю. у них что, триста миллионов пользователей?

[identity profile] jtootf.livejournal.com 2009-05-15 11:47 pm (UTC)(link)
а много и не надо. эффект от сериализации имеет смысл при объёме данных ~< 32MB, такую микросхемку поставить не большая проблема. сделать снимок контекста, чтобы обеспечить почти мгновенный взлёт - хватит, а всё остальное особого смысла нет сериализовать

опять же, если я правильно понимаю проблему. по-моему всё же неправильно
Edited 2009-05-15 23:47 (UTC)

[identity profile] jtootf.livejournal.com 2009-05-15 10:43 pm (UTC)(link)
про потоки посмотрю в Tcl Core. сериализации там точно нет, но вот критерии - это интересно

(Anonymous) 2009-05-15 10:48 pm (UTC)(link)
Попробуй parrot. А вообще говорят не так сложно написать свою виртуалку, если пишешь собственный ЯП (а для чего еще она нужна?)

[identity profile] jtootf.livejournal.com 2009-05-16 12:23 am (UTC)(link)
для запуска существующего ЯП, например :) под тот же Parrot ничего нового никто не придумывал