• Моделируем полёт PHP на крыльях Erlang
    0
    там ничего не падает, там проблема с тем, что для websocket transport'а не совсем правильно реализована поддержка «сердцебиения» из-за чего закрывается соединение. Если отключить поддержку сердцебиения (а в erlang'овской реализации ее кстати и нет), то все нормально работает:

    twitter.com/#!/3rdEden/status/74884695933980673
    twitter.com/#!/3rdEden/status/74879359017680896

  • Node.js — руководство по убеждению начальства
    0
    да, был такой: --crankshaft. им же можно было его выключить и переключиться на «классический» кодогенератор (--nocrankshaft); но теперь классический убрали полностью.
  • Node.js — руководство по убеждению начальства
    +1
    не вижу ничего erlang специфичного, такой же точно шаблонизатор, сваливающий в кучу представление и логику, можно хоть на pascal'е написать.

    а в случае nodejs даже веселее получится, чем в случае erlang'а и паскаля, как раз из-за того, что язык один и тот же на клиенте и на сервере (сей заезженный аргумент тут оказывается как раз к месту).

    там где на nitrogen'е приходится писать мутный код в стиле page.apiThree(Bert.atom('hello'), Bert.atom('robert'), 12345) и заворачивать его в строчку с (о боги-боги) написанным руками тэгом a (см. nitrogenproject.com/demos/viewsource?module=demos_api), в nodejs все будет единообразно.
  • Node.js — руководство по убеждению начальства
    0
    Он уже в 3.1 работал, но не был включен по умолчанию.

    В 3.2 включили по умолчанию для x64/ARM.

    Сейчас trunk V8 уже 3.3
  • Node.js — руководство по убеждению начальства
    0
    Ryan держит 0.4.x на V8 3.1.x. Crankshaft включили для x64/ARM по умолчанию в 3.2.x
  • Удаленная отладка Node.js приложений и кода на WebKit браузерах
    0
    LiveEdit, к сожалению, не всесилен и иногда ведет себя непостижимым для простого человека образом, если правка не тривиальная.
    Была пара тредов с удивлением в nodejs листе, когда ryah попросил потестировать ветку с перегрузкой модулей по живому реализованной через LiveEdit (кажется эта — github.com/joyent/node/tree/reload).
  • Про C++ алиасинг, ловкие оптимизации и подлые баги
    0
    надеюсь обо мне вспоминают с той же теплотой, с какой я вспоминаю родной X ;-)
  • Про C++ алиасинг, ловкие оптимизации и подлые баги
    +2
    вроде полгода же всего до защиты осталось? ;-)

    я слегка удивлен, что вам не сообщили в X, что GCC умеет достаточно продвинутый анализ синонимов делать: межпроцедурный, чуствительный к потоку управления, с поддержкой указателей на поля… первая версия у них уже в 99 году появилась, в gcc 2.x. Правда GCCшники о своей реализации скорее всего никаких статей не писали.

    [впрочем и Lars Ole Andersen и Bjarne Steensgaard, и Heintze они свои анализы описывали для С или С-подобных языков, с операцией взятия адреса и т.д. Для Java все-таки чуточку проще в этом смысле… Ни указателей на поля, ни операции взятия адреса переменной. Berndl et al правда свой прикольный алгоритм с BDD для Java описали, но если я правильно понимаю ни в одном промышленном компиляторе он не используется до сих пор].
  • Lua+FFI vs. JavaScript
    +3
    читерство :-)

    в браузерах есть webgl typed arrays (new Float64Array(length)), но Crankshaft их еще не оптимизирует, но будет.
  • Lua vs. JavaScript
    +2
    или JIT выкидывает часть вычислений — color-то теперь никуда не утекает ;-)
  • Lua vs. JavaScript
    +3
    ссылочка в тему: www.cnblogs.com/miloyip/archive/2010/07/07/languages_brawl_GI.html

    там правда все по-китайски, но суть ясна и без знания китайского: человек тоже какой-то рендерер написал на куче языков; можно иероглифы пропускать и в пролетарскую суть диаграм с результатами замеров вникать ;-)
  • Lua vs. JavaScript
    +1
    Запустил Lua тест с оригинальными файлами без локальных функций. Изменений особых нет +- пару процентов.


    Т.е. если функции вызывать глобально, а сборку мусора отложить, то получается быстро?

    Ага! Ну я так и думал, что в GC дело. От LJ2 следует ожидать, что он сам поднимет загрузку глобалов (load hoisting). На обычных числодробилках даже Crankshaft (V8 после 3.0) к LuaJIT2 вроде не подобрался пока, я уж не говорю о классическом бэкенде (V8 до 3.0).

    Насколько я помню, в v8 сборщик многопоточный


    Нет, он однопоточный (точнее они, для частичных сборок в молодом поколеннии копирующий scavenger, для полных сборок — MarkSweep/MarkCompact). Ну и пауза в несколько секунд — это, м-м-м-м, не сказать что бы отменный сборщик :-)
  • Lua vs. JavaScript
    0
    Нет, беты нет.

    Есть Chrome 10 Dev, которая вот-вот пойдет в бету.
  • Lua vs. JavaScript
    0
    Участие принимали Chrome 9.0 Beta


    Хм. А ведь это с V8 2.5.x, т.е. без Crankshaft, т.е. без серьезной адаптивной компиляции.

    Как бы не оказалось, что тут все упирается исключительно в GC.
  • Lua vs. JavaScript
    0
    см. habrahabr.ru/blogs/algorithm/113250/#comment_3635646

    промазал по кнопке :-(
  • Lua vs. JavaScript
    0
    все вызовы глобальных функций переделаны на вызов локальных функций


    если вы действительно все вызовы заменяли, то ради чистоты эксперимента следовало бы аналогичную операцию и с JavaScript проделать.

    понижена цикличность сборки мусора


    да, встроенный GC в Lua при «мусора много и мрет он молодым» ведет себя хуже GC V8.
  • Вынеси мусор!
    0
    на практике не нужно звать GC, он сам придет :-)

    Интересно, это в node.js можно использовать?

    Можно, но опять же — не нужно.
  • Вынеси мусор!
    +2
    Если запустить Хром с флажком --js-flags="--expose-gc", то можно получить доступ к функции window.gc(), которая принудит V8 собрать весь мусор.
  • Сведение решения NP-полной задачи «3-выполнимость» к алгоритму с полиномиальной сложностью
    0
    поверь, я за шесть лет на мехмате успел много статей прочитать, поэтому мне есть, с чем сравнивать.
  • Пример сайта на Common Lisp
    +3
    вопрос является естественным следствием того факта, что Yahoo предпочли переписать приложение целиком. почему спрашивается? Грэм, конечно же, гордо заявляет, что Yahoo просто не осилило lisp.

    Но это «бзззз» неспроста как говорил Винни Пух. Грэм опять же сам писал, что lisp позволил им, не побоюсь этого слова, лабать со страшной скоростью, недоступной конкурентам. У меня естественно возникает сомнение, здоровый скепсис, в отношении качества кода, который стал результатом этой гонки. Но это только сомнение, ни Грэм-то, ни Yahoo, код это не показывают никому. Только сферические эссе в вакууме… Но тут видите какая ситуация, такие эссе про каждый второй язык программирования есть — кому-то монады сами баги ловят, кому-то макросы сами код пишут и так далее. Без скепсиса тут никак нельзя.
  • Пример сайта на Common Lisp
    0
    если дальше читать, то там слово «некоторых» можно обнаружить, а не «всех».

    кому-то вырвиглазный синтаксис приятен и невырвиглазен, я с этим и не спорю.
  • Пример сайта на Common Lisp
    0
    какое мнение?

    там вообще вопрос в конце предложения стоит.
  • Пример сайта на Common Lisp
    0
    если под метапрограммированием вы понимаете лисповые макросы, то берем Template Haskell, metalua или Nemerle и убеждаемся, что и в языках, неоснованных на sexpr, существует метапрограммирование на уровне синтаксических деревьев.
  • Пример сайта на Common Lisp
    0
    разумеется, а вы где-то видели, чтобы я за всех людей на земле говорил?
  • Пример сайта на Common Lisp
    0
    какими такими особыми свойствами? (за исключением «программа — это список», аллилуйя!)
  • Пример сайта на Common Lisp
    0
    нет, скобочки мне не особо мешают видеть структуру программы, я просто предпочитаю старый добрый алголо-подобный синтаксис.
  • Пример сайта на Common Lisp
    –4
    > вернее он настолько необременительный, что не заслоняет семантику

    пышь-пышь, предположим вы написали кусок программы ну хотя бы на 5 KLOC ушли на полгода, вернулись и снова посмотрели на эти 5 KLOC. у меня есть гипотеза, что время, которое вы все-таки потратите на восстановление «картинки в голове», несколько больше для lisp, чем для языка с «обременительным» и замороженным синтаксисом.
  • Пример сайта на Common Lisp
    +1
    > а поддерживать не смогли

    вот-вот, ключевой момент.

    где так сказать гарантия, что Грэм сам что-то «поддерживал», а не оттягивал момент колапса, вооружившись «гибкостью и экспресивностью» чудо языка и накладывая заплатки поверх заплаток?
  • Пример сайта на Common Lisp
    +1
    > При этом куча дополнительных плюшек:

    Вы забыли упомянуть самую главную плюшку: совершенно вырвиглазный синтаксис, который для некоторых аннулирует любые другие мифические и не очень плюшки.
  • Пример сайта на Common Lisp
    +3
    Пол Грэм мастер побеждать посредственность — написал на лиспе электронный магазин, продал его Yahoo!, а те возьми и перепиши его на C++ & Perl.

    Что-то тут явно нечисто :-)
  • Свежий релиз Firefox 4 Beta 9 готов для скачивания
    0
    а что вас скажем в developer tools не устраивает?
  • Comment from a drafted post.
  • Обёртки для создания классов: зло или добро?
    0
    хотя если вы у методов тела не с this сделаете, а с ссылкой на переменную из объемлющего scope, то контекст перестанет быть тривиальным и V8 откомпилируют методы нелениво (это на самом деле дизайнерское решение, такое, можно сделать и так чтобы функции с нетривиальным контекстом тоже лениво компилировались для экономии места).

    В любом случае сгенерированная версия (неоптимизированного в случае V8 >= 3.0) кода разделяется между всеми экземплярами замыканий созданных из одного литерала.
  • Обёртки для создания классов: зло или добро?
    0
    в данном конкретном случае a.method1-a.method9 даже не должны компилироваться в нативный код — они не вызываются (и имеют тривиальный контекст).
  • Обёртки для создания классов: зло или добро?
    +1
    Не рекомендую потребление памяти замерять Process Explorer'ом. Память может быть выделена, но не использоваться под объекты.

    В последних версиях Chrome можно запустить его с флажком --enable-memory-info и получить доступ к console.memory (я правда не помню есть ли эта фича в Chrome 8).

    Либо скачайте сорцы V8, соберите shell и погоняйте ваш тест в консоли с --trace-gc.

    Еще можно в сорцы посмотреть :-) Вас интересуют классы v8::internal::JSFunction (создается для каждого замыкания) и v8::internal::SharedFunctionInfo (разделяется между замыканиями созданными из одного литерала), v8::internal::Code (представляет собой скомпилированный нативный код, неоптимизированная версия одна для всех замыканий созданных из одного литерала), v8::internal::Context (контекст замыкания).

    Если прикидывать на пальцах, то, если ничего не путаю, на ia32 будет что-то около 36 байтов на JSFunction + 32 байта на тривиальный Context — минимальная цена каждого замыкания.
  • О ненависти к С++
    +1
    Возникает очевидное противоречие: с одной стороны вы вроде как продемонстрировали «силу сильную», а с другой никому не рекомендуете эту силу использовать. Отсюда вопрос: зачем такая фича нужна и зачем требовать от языка её наличия. Нелогично. :-)

  • О ненависти к С++
    0
    за такой код в Соловец на вечное покаяние высылать нужно.

    хотя бы потому, что указатели на члены классов не обязаны по размеру совпадать с обычным указателем.
  • Кодирование видео в реальном времени во время загрузки
    0
    А как вы справляетесь с тем

    Я думаю автор топика никак не связан с авторами transloadit.

    Захотите их спросить: вот твиттер Феликса twitter.com/felixge, или на канале #node.js в FreeNode его всегда модно выцепить.
  • Новая версия V8 будет на 50% быстрее
    0
    спасибо за инфу. поделюсь с коллегами. интересно, что куча отнюдь не огромная.
  • Новая версия V8 будет на 50% быстрее
    0
    да, можно просто обмениваться объектами которые лежат вне кучи V8. никакой особый RPC не нужен…