OberonCore https://forum.oberoncore.ru/ |
|
x64 компилятор - проект Гершель https://forum.oberoncore.ru/viewtopic.php?f=127&t=6640 |
Страница 1 из 4 |
Автор: | Иван Денисов [ Пятница, 17 Июль, 2020 11:39 ] |
Заголовок сообщения: | x64 компилятор - проект Гершель |
Объявляем о запуске проекта по разработке нативного x64 компилятора для Компонентного Паскаля в Блэкбоксе. Опорный сайт для международной аудитории: http://herschel.oberon.org А также паблик вконтакте: https://vk.com/HerschelCompiler |
Автор: | Дмитрий Дагаев [ Пятница, 17 Июль, 2020 23:25 ] |
Заголовок сообщения: | Re: x64 компилятор - проект Гершель |
На сайте есть ссылка на обсуждение со мной. Я предлагал Ивану перенести BlackBox под уже разработанный оптимизирующий компилятор для 64-бит llvm MultiOberon, а Антону - написать бэкенд под WebAssembly для MultiOberon. |
Автор: | Иван Денисов [ Суббота, 18 Июль, 2020 05:29 ] |
Заголовок сообщения: | Re: x64 компилятор - проект Гершель |
Моя задумка была в том, чтобы, по возможности, использовать наработки MultiOberon для разработки нативного компилятора. Дмитрий Викторович, вы ведь не раз на встречах говорили, что несколько изменили компилятор, переименовали некоторые переменные и константы для понятности, а также сделали сменный бэкенд. Также хотелось узнать, интересно ли будет вам участвовать в проекте нативного компилятора. Хотя какой-то обмен опытом возможен. Будет здорово, если найдете возможность участвовать в обсуждениях. Сейчас процесс выглядит так, что компилятор для проекта Гершель претерпевает большие изменения в части фронтенда, они отражены в файле HrT. |
Автор: | arlean1 [ Суббота, 18 Июль, 2020 05:57 ] |
Заголовок сообщения: | Re: x64 компилятор - проект Гершель |
Дмитрий Дагаев писал(а): На сайте есть ссылка на обсуждение со мной. Я предлагал Ивану перенести BlackBox под уже разработанный оптимизирующий компилятор для 64-бит llvm MultiOberon, а Антону - написать бэкенд под WebAssembly для MultiOberon. Здорово! |
Автор: | Иван Денисов [ Суббота, 18 Июль, 2020 06:44 ] |
Заголовок сообщения: | Re: x64 компилятор - проект Гершель |
arlean1, возможно радость преждевременна. На нашей встрече были высказаны некоторые идеи и предложения, однако проект уже идет другим путём. Это зависит не столько от меня, сколько от желания и амбиций основных разработчиков. Антону интересно делать компилятор иначе. Еще SovietPony активный участник обсуждений — его также заинтересовала разработка прямого компилятора. Буду публиковать новости. Я оказываю информационную, организаторскую и коммуникационную поддержку проекту. Надеюсь скоро оказать и финансовую. Нам ещё Мэтью из Mobatec обещал спонсорскую помощь (но пока ничего не перевел). Возможно Илья также сможет помочь позднее. Ждем поддержки от всех заинтересованных разработчиков и пользователей! |
Автор: | arlean1 [ Воскресенье, 19 Июль, 2020 12:51 ] |
Заголовок сообщения: | Re: x64 компилятор - проект Гершель |
Иван Денисов писал(а): Моя задумка была в том, чтобы, по возможности, использовать наработки MultiOberon для разработки нативного компилятора... компромисс переходящий в сотрудничество - более рациональный подход. LLVM - это стабильность уже на первых шагах. На сайте очень краткие описания ((( .... Но как просто пример - Emscripten - компилятор из LLVM байт-кода в JavaScript. https://habr.com/ru/post/143583/ |
Автор: | Иван Денисов [ Воскресенье, 19 Июль, 2020 13:13 ] |
Заголовок сообщения: | Re: x64 компилятор - проект Гершель |
arlean1 писал(а): Иван Денисов писал(а): Моя задумка была в том, чтобы, по возможности, использовать наработки MultiOberon для разработки нативного компилятора... компромисс переходящий в сотрудничество - более рациональный подход. LLVM - это стабильность уже на первых шагах. На сайте очень краткие описания ((( .... Но как просто пример - Emscripten - компилятор из LLVM байт-кода в JavaScript. https://habr.com/ru/post/143583/ LLVM - это очень хорошо, и тут Дмитрий Викторович многое исследовал и это один из важных путей развития мультиплатформенности. Но в сообществе есть большой интерес в нативном компиляторе x64. Мы рассуждали ещё о том, чтобы в МультиОбероне появился четвертый бэкенд в виде транслятора в нативный набор инструкция для x64. Однако у Антона есть рационализаторская задумка, которую он достаточно основательно обосновал. Заключается она в омоложении версии OP2, которая используется в ББ, актуальными языковыми средствами, чтобы компилятор помогал обнаруживать ошибки несовместимости типов при разработке бэкендов. Дмитрий Викторович не исключил, что возможно после наших исследований новых подходов, что-то перенесет и в МультиОберон. Так возможно проекты срастутся и дополнят друг друга интеллектуально. |
Автор: | arlean1 [ Воскресенье, 19 Июль, 2020 14:11 ] |
Заголовок сообщения: | Re: x64 компилятор - проект Гершель |
Иван Денисов писал(а): ...Но в сообществе есть большой интерес в нативном компиляторе x64. ... Это очень занимательно, красиво и вызывает интерес. Но если это просто "спортивный" интерес??? Есть ведь и другие мнения о нерациональности подобного пути https://habr.com/ru/post/277717/ ... не говоря об экономии ресурсов, времени и отхода от мирового тренда в разработке компиляторов Цитата: На сегодняшний день существует только два реалистичных пути разработки компилятора для собственной архитектуры: использование GCC либо использование LLVM. Другие проекты компиляторов с открытым исходным кодом либо не достигли той степени развития, как GCC и LLVM, либо устарели и перестали развиваться, они не обладают развитыми алгоритмами оптимизации, и могут не обеспечивать полной совместимости даже со стандартом языка С, не говоря уже о поддержке других языков программирования. Разработка собственного компилятора “с нуля", это весьма нерациональный путь, т.к. существующие опенсорсные решения уже реализуют фронтенд компилятора с множеством весьма нетривиальных алгоритмов оптимизации, которые, к тому же, хорошо протестированы и используются уже длительное время.
|
Автор: | Дмитрий Дагаев [ Воскресенье, 19 Июль, 2020 14:23 ] |
Заголовок сообщения: | Re: x64 компилятор - проект Гершель |
Иван Денисов писал(а): Мы рассуждали ещё о том, чтобы в МультиОбероне появился четвертый бэкенд в виде транслятора в нативный набор инструкция для x64. Однако у Антона есть рационализаторская задумка, которую он достаточно основательно обосновал. Заключается она в омоложении версии OP2, которая используется в ББ, актуальными языковыми средствами, чтобы компилятор помогал обнаруживать ошибки несовместимости типов при разработке бэкендов. Дмитрий Викторович не исключил, что возможно после наших исследований новых подходов, что-то перенесет и в МультиОберон. В начале надо как-то изложить концепцию, скажем на дне Оберона. Кстати, Антон обладает замечательной для программиста способностью очень ясно излагать свои мысли. И при переключении на отличный английский эта способность сохраняется. |
Автор: | Иван Денисов [ Воскресенье, 19 Июль, 2020 18:47 ] |
Заголовок сообщения: | Re: x64 компилятор - проект Гершель |
Во первых, LLVM транслятор уже Дмитрий Викторович делает, поэтому arlaen1 — можете не переживать на этот счёт. Там есть большие достижения и проблемы тоже обозначены. Про тренды сильно не хочу обсуждать. Есть идеальное решение — нативный компилятор полным с контролем чего получается на выходе. Сейчас можно взять OCF файл и поизучать, что там какая процедура делает в машинных инструкциях. Это очень ценно для надежности, динамической загрузки, обработки исключений, разработки низкоуровневых вещей и т.п. Еще и опыт разработчиков будет. Во вторых, не обязательно общаться только на днях Оберона. Очень понравился формат онлайн-семинаров. Я думаю, что какие-то встречи разумно устраивать по тематике. И даже полезнее будет, так как возможно обстоятельнее показать, позадавать вопросы и т.п. |
Автор: | arlean1 [ Понедельник, 20 Июль, 2020 08:17 ] |
Заголовок сообщения: | Re: x64 компилятор - проект Гершель |
Иван Денисов писал(а): Во первых, LLVM транслятор уже Дмитрий Викторович делает, поэтому arlaen1 — можете не переживать на этот счёт. Там есть большие достижения и проблемы тоже обозначены. но делает его один? Иван Денисов писал(а): Есть идеальное решение — нативный компилятор полным с контролем чего получается на выходе. это кажется, что идеальное решение - под какой процессор идеальное? Может быть это как раз тупиковый путь? LLVM позволит использовать опыт бОльшего сообщества и на разных платформах. повторю мысль, к которой пришло это значительно бОльшее сообщество: arlean1 писал(а): Есть ведь и другие мнения о нерациональности подобного пути https://habr.com/ru/post/277717/
... не говоря об экономии ресурсов, времени и отхода от мирового тренда в разработке компиляторов Цитата: На сегодняшний день существует только два реалистичных пути разработки компилятора для собственной архитектуры: использование GCC либо использование LLVM. Другие проекты компиляторов с открытым исходным кодом либо не достигли той степени развития, как GCC и LLVM, либо устарели и перестали развиваться, они не обладают развитыми алгоритмами оптимизации, и могут не обеспечивать полной совместимости даже со стандартом языка С, не говоря уже о поддержке других языков программирования. Разработка собственного компилятора “с нуля", это весьма нерациональный путь, т.к. существующие опенсорсные решения уже реализуют фронтенд компилятора с множеством весьма нетривиальных алгоритмов оптимизации, которые, к тому же, хорошо протестированы и используются уже длительное время. |
Автор: | luowy [ Понедельник, 20 Июль, 2020 10:25 ] |
Заголовок сообщения: | Re: x64 компилятор - проект Гершель |
I'd like to focus on llvm, according to my skills, the first step is 32bit-x86 compiler on windows, After getting familiar with llvm, then to next step... |
Автор: | adimetrius [ Понедельник, 20 Июль, 2020 13:38 ] |
Заголовок сообщения: | Re: x64 компилятор - проект Гершель |
arlean1, вероятно, вам стоит присоединиться к Д.В. Дагаеву в его разработке? и вот Luowy тоже может подключится. Всё сообщество только выиграет от этого. Далее - не чтобы кого-то переубедить, а раскрыть мой ход мыслей. Про GCC и тренды - ну, лично я вспоминаю Вирта; когда надо было начать курс по операционным системам, он жеж мог обратить внимание на тренды. Было из чего выбрать: дос, виндофс, ос/2, юникс; можно было и полюбившуюся ему в пало-альто систему выбрать. Но он отмел их из-за сложности и необозримости: необозримости в том смысле, что 1 человек не может охватить всю систему. Допускаю, что GCC прекрасен; убежден, что с 5 млн строк кода он необозрим. Это откликается у меня апатией и потерей интереса. А вот с СР2, на базе которого мы строим Гершель - за полтора месяца я перелопатил (почти) весь фронт-энд, чтобы перевести его на новый формат таблицы символов. Еще за две недели - сделал тестовую инфраструктуру. Это обозримо, это посильно. Это откликается задором, интересом, энергией. (Впрочем, чего там: я изменил всего 3 модуля, каждый всего по полторы тыщи операторов). Полагаю, сделать ФЭ с нуля мне бы не удалось за это время. Про оптимизирующие компиляторы. Помню рассказы Д.В.Дагаева о том, как он запускал make и уходил "покурить" - оптимальность gcc вызывает у меня сомнения. За время перекомпиляции и сборки ВСЕГО ББ я даже в носу ковырнуть не успею. Открываю ББ, в нем - полтора десятка текстов-модулей по 30-80КБ. Смотрю на память: использовано ~3МБ. Открываю хром, в нем - Google Keep с полутора десятками моих записок, каждая не более 1000 симв. Смотрю память: вкладка использует 250МБ. Вывод для меня такой: оптимальность результата ТОЧНО зависит не от оптимизирующего компилятора. Поэтому, да, оптимизирующий прямой компилятор вряд ли (быстро) получится; и вряд ли это скажется на общей производительности ББ. Полагаю, нужно оптимизировать мозги; но это не точно. ПС Дмитрий Викторович - Thank you for your kind words ) |
Автор: | budden [ Понедельник, 20 Июль, 2020 17:28 ] |
Заголовок сообщения: | Re: x64 компилятор - проект Гершель |
Антон, мои аплодисменты! С (прикушенного) языка снял. |
Автор: | Иван Денисов [ Понедельник, 20 Июль, 2020 18:31 ] |
Заголовок сообщения: | Re: x64 компилятор - проект Гершель |
luowy писал(а): I'd like to focus on llvm, according to my skills, the first step is 32bit-x86 compiler on windows, After getting familiar with llvm, then to next step... There are good achievements on LLVM for slightly modified Kernel in MultiOberon project. viewtopic.php?f=157&t=6426 The structure of project is cumbersome. Please ask questions, if have troubles. However it works already with dynamic loading of modules! |
Автор: | arlean1 [ Понедельник, 20 Июль, 2020 19:29 ] |
Заголовок сообщения: | Re: x64 компилятор - проект Гершель |
adimetrius писал(а): Про оптимизирующие компиляторы. Помню рассказы Д.В.Дагаева о том, как он запускал make и уходил "покурить" - оптимальность gcc вызывает у меня сомнения. Это не моя ссыла, но что-то можно возразить ))) - https://forum.oberoncore.ru/viewtopic.php?f=157&t=6426 Это как бы тянет уже начинать LLVM заниматься "по-взрослому" для BB: Цитата: На бенчмарк это не тянет. Я просто собрал транслятор Восток в единый файл с биткодом размером ~1.5 Мб, и пробовал его запускать разными способами.
В режиме по умолчанию(-O2) LLVM lli запускал транслятор 20 секунд, с флагом -O0 - 8 сек, в режиме интерпретатора я не смог его запустить из-за ошибок поиска функций стандартной библиотеки Си. Через Sulong lli транслятор запустился за 0.08 сек, с флагом --jvm - за 0.8 сек. Странность заключается в том, что сбор транслятора с помощью clang из Си занимает 3.5 секунды. Это заставило меня всё перепроверить - выяснилось, что в дело вмешалась устаревшая версия lii-5.0, собранная в отладочном режиме. Боевой lli-6.0 запустил программу за 1.8 сек. в режиме по умолчанию, и за 0.8 сек с опцией -O0, в режиме интерпретатора(--force-interpreter) - за 0.08 сек. Итого, в режиме JIT разрыв всего лишь 10 кратный. Время работы самой прогаммы пока не удалось нормально замерить |
Автор: | arlean1 [ Понедельник, 20 Июль, 2020 19:39 ] |
Заголовок сообщения: | Re: x64 компилятор - проект Гершель |
adimetrius писал(а): Про GCC и тренды - ну, лично я вспоминаю Вирта; когда надо было начать курс по операционным системам, он жеж мог обратить внимание на тренды. Было из чего выбрать: дос, виндофс, ос/2, юникс; можно было и полюбившуюся ему в пало-альто систему выбрать. Но он отмел их из-за сложности и необозримости: необозримости в том смысле, что 1 человек не может охватить всю систему. Да, до сих пор это было возможно охватить 1 человеку, но в этом ли главная задача? Если удасться продолжить с оптимизацией на LLVM, то это может перейти на взрослый уровень промышленной эксплуатации и возможно без многих проблем с сертификацией. Или в перспективе заменить на рынке RUST - т.е. сделать привлекательным переход от сложного в изучении RUST на ВВ. |
Автор: | Иван Денисов [ Понедельник, 20 Июль, 2020 19:44 ] |
Заголовок сообщения: | Re: x64 компилятор - проект Гершель |
arlean1, прошу считать тему про LLVM закрытой, ответ Антона считать ответом на ваши вопросы про LLVM (хоть там и про gcc, суть одна). Дальнейшие сообщения будут считаться оффтопом. Заведите отдельную тему для LLVM, если хотите. |
Автор: | Дмитрий Дагаев [ Понедельник, 20 Июль, 2020 20:04 ] |
Заголовок сообщения: | Re: x64 компилятор - проект Гершель |
adimetrius писал(а): Про оптимизирующие компиляторы. Помню рассказы Д.В.Дагаева о том, как он запускал make и уходил "покурить" - оптимальность gcc вызывает у меня сомнения. За время перекомпиляции и сборки ВСЕГО ББ я даже в носу ковырнуть не успею. Если Вы меня цитируете, то цитируйте точно. Историю я рассказывал про один мой проект на работе на С++ 17 с шаблонами и проч. Он собирается более часа. К Оберонам отношения не имеет. Компилятор gcc для языка С собирает файлы, сгенеренные Omf на базе Ofront'a гораздо быстрее. Еще раз упомяну, что в МультиОбероне 3 бэкенда: нативный Omb, Omf на базе ofront'a, Oml на базе LLVM. И, понятно дело, нативный компилится быстро, а оптимизирующие медленнее. И понятно, что оптимизирующие будут быстрее по скоростным параметрам. Притом, что все работают по общей системе тестов. А обоснования, зачем понадобилось огород городить, вместо того, чтобы сделать 4-й нативный бэкенд для МультиОберона, не прозвучало. |
Автор: | Дмитрий Дагаев [ Понедельник, 20 Июль, 2020 20:15 ] |
Заголовок сообщения: | Re: x64 компилятор - проект Гершель |
Позволю еще вопрос задать, для какого BlackBox планируется делать компилятор в данном проекте? 1. Для 32-битного варианта; 2. Для 64-битного варианта, включая переделку Kernel, Meta, ..., Host* ну и, сами понимаете... |
Страница 1 из 4 | Часовой пояс: UTC + 3 часа |
Powered by phpBB® Forum Software © phpBB Group https://www.phpbb.com/ |