На каком языке написан Sc1.exe?

На странице загрузки SciTE ( http://www.scintilla.org/SciTEDownload.html ) есть является ссылкой на:

«Единый исполняемый файл с именем Sc1 (720 КБ) не требует никаких DLL или файлов свойств, поскольку они связаны с исполняемым файлом».

На каком языке это написано? Я скачал исходный код размером более 2 МБ в архиве и более 7 МБ в разархивированном виде, но размер одного исполняемого файла составляет 720 КБ.

Использовали ли они другой язык для этого небольшого автономного исполняемого файла? И как они туда DLL-файлы запихнули?

И что они использовали для GUI? Python, LUA или MFC?

И интерпретатор Python и интерпретатор Lua также встроены в exe?

Спасибо!


person user390480    schedule 25.11.2013    source источник
comment
На самом деле они не помещали туда файлы dll, а статически связывали свой exe с его внешними зависимостями. Но это увеличило бы размер исполняемого файла, поэтому он не отвечает на ваш вопрос;)   -  person Antoine    schedule 25.11.2013


Ответы (1)


Ответ находится на их странице загрузки: они использовали UPX исполняемый компрессор. Он очень эффективно сжимает исполняемые файлы, поскольку, в отличие от zip, он различает части данных/кода и обрабатывает их по-разному. Декомпрессор довольно маленький и встроен в окончательный exe; код и данные распаковываются в памяти при запуске приложения. Согласно wiki, используются алгоритмы сжатия UCL и LZMA.

Исходный каталог scite занимает 3 МБ без сжатия и написан на C++, Python и lua. Файлы свойств, которые не поставляются с одним исполняемым файлом, весят почти 800 КБ, а документ - 500 КБ. На самом деле существует около 1 МБ исходного кода, который должен генерировать exe-файл размером 1-5 МБ, который, в свою очередь, сжимается UPX в файл размером 720 КБ.

person Antoine    schedule 25.11.2013
comment
Так интерпретатор Python и интерпретатор Lua также встроены в exe? - person user390480; 25.11.2013
comment
Lua встроен, но он довольно маленький. Python зависит от времени сборки, и сценарии используются для подготовки сборки и автоматизации некоторых манипуляций с исходным кодом, поэтому нет, он не встроен. - person Antoine; 26.11.2013
comment
Спасибо @Antoine, это действительно круто. Вы случайно не знаете, что они использовали для создания графического интерфейса? Я не могу найти это на их сайте. - person user390480; 26.11.2013
comment
Глядя на код, GUI основан на Scintilla. Они также реализуют некоторые компоненты вручную, используя собственные библиотеки (API Win32 в Windows и GTK+ в Linux). - person Antoine; 26.11.2013