Каковы различия между различными ветками Rebol 3, особенно с новой веткой REN?
Платформы, на которых они будут работать, набор функций, организация кода, соответствие стандарту C?
Каковы различия между различными ветками Rebol 3, особенно с новой веткой REN?
Платформы, на которых они будут работать, набор функций, организация кода, соответствие стандарту C?
Этому ответу суждено устареть, поэтому он установлен на Вики сообщества. Эта информация представлена на сентябрь 2015 г.. Поэтому, если вы обновляете этот ответ по прошествии некоторого времени, пожалуйста, измените дату.
Последняя сборка была 5 марта 2011 г. и предшествовала выпуску с открытым исходным кодом.
Нет поддержки GUI, нет поддержки HTTPS, нет поддержки последовательного порта, нет поддержки UDP, нет смарт-консоли...
Никаких 64-битных сборок. Двоичные файлы предназначены для Windows x86, OS/X (PPC или x86), Linux (x86 или PPC), FreeBSD x86.
В то время как двоичные файлы Rebol2 заархивированы для многих "эзотерических" систем (BeOS, AIX , Windows DEC Alpha, QNX, Solaris...) аналогичные двоичные файлы для Rebol3 не предоставлялись. Единственная «странная» сборка предназначена для Amiga и только для Amiga OS4 PowerPC. Об успешных сборках Rebol3 для эмуляторов Amiga не сообщалось.
Открытый исходный код был 12 декабря 2012 г..
Двоичные загрузки rebol.com не были перестроены как часть этого выпуска. Однако участник сообщества (@earl здесь, на SO) создал ферму сборки на rebolsource.net, которая следует этому мастеру GitHub. всякий раз, когда он обновляется. Учитывая, что мастер rebol/rebol GitHub не обновлялся с марта 2014 года, этот динамизм в настоящее время используется недостаточно.
Сборка исходников на момент релиза получила исполняемый файл, не отличимый(?) по функциональности от сборок от 5 марта 2011. Это говорит о том, что в исходный код было внесено мало изменений, кроме некоторых правок по очистке и лицензированию Apache для подготовки к публикации.
Незначительные исправления и исправления интегрировались спорадически, при этом большинство PR простаивали. Последний PR, принятый на момент написания, был 3 марта 2014 г., то есть больше года. назад.
Самый заметный «ломающий» PR, который был одобрен, заключался в переназначении имени ФУНКЦИИ. Было решено сломать старую форму арности 3, чтобы слово можно принять за гораздо более полезную реализацию, такую как сбор местных жителей FUNCT. (Это также выровняло Rebol с Red, FUNCTION которого имеет арность 2 и действует аналогично.) FUNCT был сохранен как есть для устаревшего кода.
Самый важный ненарушающий PR, который был получен, вероятно, не требует блоков вокруг ЕСЛИ, ЕСЛИ ИЛИ ЛЮБОГО тела. Это было хорошо воспринято теми, кто знает, что оно есть, как подходящее для свободной формы и нестандартной философии языка. Это позволяет некоторым конструкциям кода стать «красивее» и дает программистам больше выбора, хотя, похоже, это не вызывает больше проблем, чем что-либо еще. Это, конечно, меньше скорости, чем if [condition] [...]
, на самом деле кажется, что почти никто не знает, что эта функция была добавлена, поэтому она не должна никого кусать. (Если кто-то может прислушаться к Red, чтобы убедиться, что он получает ЕСЛИ и ЕСЛИ/ТОЛЬКО, то это было бы идеально.)
RETURN/REDO был удален. Обоснование заключалось в том, что он позволял функциям эффективно вести себя с переменной арностью, и что это было ненужным и больше не отнимало твердую землю. возможность предсказать арность функции по ее спецификации. Возможно, эта позиция заслуживает второго взгляда... поскольку пользователи Лиспа, которые настаивают на добавлении макросов в стиле Лиспа, похоже, не очень беспокоятся об этом. (Здесь, во вселенной StackExchange, это вызвало вопрос Programmers.SE Выиграет ли Rebol (или Red) от макросов в стиле Lisp?, который пока не получил много ответов.)
До открытия исходного кода Rebol у Saphirion AG были особые отношения с технологиями Rebol. У них был доступ к исходному коду, и они несли ответственность за большую часть работы по разработке графического интерфейса Rebol3. Они также добавили несколько других вещей, таких как HTTPS.
Saphir доступен в виде загружаемого двоичного файла с их веб-сайта, но предназначен только для 32-разрядной версии Windows. Одно время существовал экспериментальный .APK для Android от Сафириона.
Некоторые (но не все) исходники Saphir были выпущены после открытия исходного кода. Заметными упущениями были сборка для Android и некоторый код Rebol3 для запечатывания...a способ внедрения сжатых скриптов и ресурсов в двоичные файлы интерпретатора без необходимости его перекомпиляции.
(Примечание. В соответствии с лицензией Apache2 не требуется выпускать исходный код для своей производной работы.)
Из-за того, что GitHub rebol/rebol задерживается из-за интеграции, был создан форк rebolsource/r3 для «сборки сообщества», где работа может быть поэтапной.
Изменения в Rebolsource были консервативными и, по-видимому, были направлены на то, чтобы показать процесс того, как rebol/rebol GitHub может принять изменения «в том духе, в котором был задуман Rebol», если этот репозиторий будет делегирован сообществу. (Для этого духа см. это.) Следовательно, он интегрировал не вызывающие споров исправления ошибок и настройки вместо больших сторонних криптографических библиотек для реализации HTTPS. Кроме того: не допускается добавление зависимостей сборки, кроме компилятора C (например, без автоинструментов GNU).
Двоичные файлы для сборки сообщества создавались по мере необходимости для тех, кто их запрашивал, но не мог собрать их самостоятельно.
Atronix — поставщик решений для промышленной автоматизации, использующий Rebol. О том, как они это делают, рассказывает Дэвид ден Харинг, технический директор. , а их ПО ZOE построено на их версии Rebol.
После открытия исходного кода Atronix в партнерстве с Saphirion перенесла графический интерфейс на Linux. Atronix публикует свой исходный код публично по мере его разработки, а Дэвид ден Харинг отмечает в видео выше, что у них есть только один разработанный ими проприетарный компонент (драйвер промышленного управления). Кроме того, они рады поделиться исходным кодом для всех разработок Rebol, которые они делают.
Компания Atronix интегрировала 64-разрядные исправления от Rebolsource, создала 64-разрядную версию Windows и предлагает актуальные двоичные файлы. их ветки разработки для Windows и Linux x86/x64, а также Linux ARMv7.
Помимо функций Saphir, в сборке Atronix добавлена поддержка CALL с /INPUT, /ВЫВОД, /ОШИБКА. Он также добавил интерфейс внешних функций, реализующий LIBRARY!, ROUTINE! и СТРУКТУРА! для связи с динамическими библиотеками, отличными от Rebol. Он также поддерживает инкапсуляцию в Windows и Linux.
«Религия» Rebol временами противоречила целесообразности, поэтому процесс сборки на основе Rebol при необходимости заменялся редактируемыми вручную make-файлами и проектами Visual Studio. Библиотека FFI ввела зависимость от автоинструментов GNU для сборки.
Все сборки Atronix включают графический интерфейс, поэтому сборки «Core» нет. И опять только линукс и винда.
(Примечание предвзятости: эта вилка — инициатива, начатая @HostileFork, знает о ней больше всего и будет говорить с большим энтузиазмом о.)
Ren-C начинался как извлечение сборки Core из кодовой базы Atronix. Это дало ему такие функции, как HTTPS, расширенный CALL и интерфейс внешних функций практически для всех платформ, для которых Rebolsource смог создать. Обновления, июль/сентябрь 2015 г. Ren/C поддерживает продолжение строки в консоли, функции пользовательских инфиксов, несколько исправлений...
Ren-C вносит масштабные изменения и устраняет фундаментальные проблемы в R3-Alpha, которые отслеживается в Trello и предоставляет дополнительную информацию. Существует новый часто задаваемые вопросы в качестве вики GitHub. Критические проблемы, такие как возвраты с заданной областью действия, были решены, и продолжается работа над другими нерешенными проблемами. .
Хотя R3/View от Atronix требовал некоторых дополнительных зависимостей, Ren/C отказался от возможности сборки только с помощью компилятора C и исключил все созданные вручную make-файлы/проекты.
Помимо Windows, Linux и Mac как в 32-битном, так и в 64-битном вариантах, Ren/C также был построен для небольших игроков, таких как HaikuOS и да, даже для Syllable. Это интересно больше для демонстрации того, насколько широко работают готовые сборки кода C89 (просто как make -f makefile.boot
), в отличие от особенно большой базы пользователей этих конкретных ОС!
С точки зрения языковой строгости Ren/C продвигает современные методы. Хотя он все еще может быть построен как C89, он также может быть построен как C99 и C11. Также было проверено, что он строится от C++98 до C++14, и с некоторыми стратегическими изменениями в #ifdef __cplusplus
он может использовать преимущества современного C++ как своего рода инструмента статического анализа кода C. Появляются предупреждения, все ошибки типов исправлены, и это "постоянно правильно". Необходимые изменения были тщательно продуманы, чтобы сделать базовый код Rebol C не только более правильным, но и чище и понятнее. источник по всем направлениям.
С точки зрения разработчиков C, Ren/C должен быть стабильным, организованным и достаточно прокомментированным, чтобы любой, кто знает C, мог "уверенно модифицировать" и пробовать новые функции. Это означает возможность реализовать возвраты с определенной областью действия (фактически написано, но не отправлено) или попробуйте разработать такие функции, как NewPath а>.
С точки зрения архитектуры Ren/C вообще не должен иметь исполняемый файл... но должен быть библиотекой для встраивания интерпретатора Rebol в другие программы. Теперь это основа для Ren/C++, который также был разработан для работы с Red.
С точки зрения тестирования, Ren/C намеревается привести все в форму для инженерной строгости и нулевой терпимости к ошибкам. Это означает отказ от таких методов, как заполнение памяти нулями для сокрытия неинициализированных обращений к памяти, использование очистителя адресов, < href="http://valgrind.org/" rel="nofollow noreferrer">Valgrind и набор тестов, который может пройти самые высокие настройки для обоих.
Несмотря на то, что включение всех дополнительных функций сделало исполняемый файл Ren/C почти в два раза больше, чем у Rebolsource, еще не было никакого аудита, чтобы увидеть, как это можно уменьшить. Было подтверждено, что существуют дубликаты кодирования/декодирования Zlib и PNG, например (Saphirion включает LodePNG, скорее всего, обойти ошибку в существующем PNG, потому что это было проще, чем исправить ее... но не законсервировало предыдущий код). Кроме того, на повестке дня стоит возможность сделать сборку, которая выборочно интегрирует только те кодеки, которые вы хотите использовать.
Ren / C в настоящее время имеет заинтересованные стороны из Atronix и Rebolsource, которые участвуют в его разработке и управлении, что повышает вероятность того, что он может превратиться в «ядро Rebol». Теперь он связан с кодом, поддерживающим Ren Garden, и использует аналогичный подход. она может быть настроена как библиотека, используемая Atronix R3/View... затем Rebolsource... и, возможно, в конечном счете сам rebol/rebol.
(Примечание о предвзятости: это редактирование добавлено самим Олдесом 28 февраля 2019 г.)
Создан из ветки community. Основное внимание уделяется сохранению кода, близкого к оригинальному релизу Карла, без того, чтобы слепо брать все из Atronix/Saphirion, но по-прежнему пытаться постепенно улавливать хорошие вещи из этих ветвей.
В отличие от Ren-C, эта версия не пытается ввести новый синтаксис, а скорее приближается к оригинальному Rebol2 и новому Красный язык