Пользователь
0,0
рейтинг
13 ноября 2013 в 14:27

Разработка → js2js: компилятор из JavaScript в JavaScript

JavaScript — это ассемблер Веба. В мире существуют десятки проектов, которые компилируют код на C++, Java, C#, Python, Ruby или любом другом языке в JavaScript. Практически не осталось языка, который невозможно скомпилировать в JavaScript. Ну разве что кроме… самого JavaScript!
image
Мы решили исправить эту ситуацию. Встречайте: js2js — революционный компилятор, который компилирует JavaScript в JavaScript!

Ключевые особенности проекта


Контроль: вы получаете полный контроль над каждой строчкой результирующего кода. Вы даже можете скомпилировать неработающую программу на JavaScript в идентичную ей неработающую программу.
Нулевой оверхед: js2js не замедлит исполнение кода, скомпилированный код будет иметь точно такую же производительность как и исходный.
Интеграция: js2js работает с любой другой существующей технологией связанной с JavaScript: AngularJS, Emscripten, Vanilla JS, jQuery, CoffeeScript, TypeScript, и даже Dart.
Совместимость: код, сгенерированный js2js поддерживает все виды стационарных, мобильных устройств и браузеров. Даже если вы пишете под Netscape 2.0, вы можете скомпилировать свой код в js2js.

Использование


Код проекта доступен на github и работает на NodeJS. Для того чтобы скомпилировать ваш код просто введите в консоли команду:
node js2.js -i <input_file_or_directory> -o <output_file_or_directory>

Например, можно скомпилировать сам компилятор:
>node js2.js -i js2.js -o js2.compiled.js -v
Welcome to js2js compiler.
Compiling js2.js...
Output is written to: js2.compiled.js
Done!


Как я могу помочь проекту?


Код проекта доступен по лицензии MIT, а значит вы можете присылать свои pull-requests, развивать свою ветвь проекта, использовать его в своих коммерческих и не очень проектах или просто рассказать о нем своим друзьям.
Виктор @mace
карма
204,2
рейтинг 0,0
Реклама помогает поддерживать и развивать наши сервисы

Подробнее
Спецпроект

Самое читаемое Разработка

Комментарии (30)

  • +17
    У меня короче: cp $1 $2
    • +10
      В вашем коде недостаточно джаваскрипта ;)
  • +9
    Зря все-таки хаб ХаброЮмор убрали. Так хоть отписался бы.
    • +2
      Да, надо бы снова завести, что-нибудь типа «Петросян позвонит»
  • +3
    Нужно было хотя бы описать принцип работы и основные проблемы, с которыми пришлось столкнуться.
    Пришлось лезть в код — вот он, ключевой момент компилляции:
    Js2JsCompiler.prototype.compileCode = function(code) {
            return code; // as we need to compile javascript to javascript, we do nothing here :)
    }
    
  • +3
    При помощи вас, скомпилировал «Войну и Мир» в «Войну && Мир». Спасибо. Пишите побольше подобных компиляторов.
  • +4

    • 0
      С вашего разрешения вставлю эту картинку в тело поста :)
  • +1
    [удалено автором]
    • +1
      [[удалено автором]]
      • +1
        [удалено автором]
        • НЛО прилетело и опубликовало эту надпись здесь
          • +2
            []+{}
          • –6
            [здесь могла быть ваша реклама]
          • –1
            [object Object] же.
            • НЛО прилетело и опубликовало эту надпись здесь
              • 0
                Продам гараж!
  • +1
    Вы хотели сказать транслятор?

    Я года два назад в целях обучения писал свой интерпритатор js-а (с минимальной поддержкой фич) и тогда натыкался на полную реализацию javascript (лексер/парсер/рантайм) на javascript.
  • –1
    А если «серьезно», то давно витает в голове идея насчет эволюционирующего кода на js. Представьте, что энтузиасты смогут добавить себе на сайт небольшой скрипт, который подгрузит начальный js код, он выполнится на клиентской машине и немного изменится (например «украв» что-нибудь из другого js кода страницы или еще как-то), и отдаст себя обратно на сервер. Т.е. вычислительные мощности будут обеспечиваться клиентскими машинами, с создателя нужен только мега-крутой алгоритм самомодификации кода без ошибок (тут нужен компилятор). Итого через пару лет получаем вселенский разум на js. PROFIT!!!

    з.ы. Ну и конечно нужен еще более крутой алгоритм по отбору более «успешного/полезного» кода.
    • +1
      «Once in the city of JavaScript an old samurai was playing shōgi thinking that he is playing poker. The outcome of the game was undefined.»
      Итог работы разума немного предсказуем.
  • НЛО прилетело и опубликовало эту надпись здесь
  • +4
    вот лучше подходит…
    image
    • 0
      Это ж про мониторы! А нужно вот это.
  • 0
    Да у Вас еще и сам компилятор на JS написан. Лихо это Вы.
  • +5
    Отдал в отдел тестирования, сказали:

    1. Не соответствует спецификации — обрабатывает не только js-файлы
    2. Не проверяет js синтаксис — компилит все, что бы ни находилось в js-файле
    3. Вылетает на больших файлах: не смог справиться с 32gb_porno.avi

    Это явная альфа — НЕ ПОЛЬЗУЙТЕСЬ!
  • 0
    Жаль, не вижу кнопки Donate.
  • 0
    А где тесты?
  • +1
    закомитить node_modules это залог успеха любого проекта
  • +1
    Почитал код проекта. Понравилось, как используется bottom up парсер, хорошее синтаксическое ядро и неплохой словарь. Ребят ждет большое будущее!

Только зарегистрированные пользователи могут оставлять комментарии. Войдите, пожалуйста.