Gela - реализация языка Ада для TenDRA

Это главная страница проекта Gela. Целю проекта является создание переносимого компилятора языка Ада.

Основные принципы разработки описаны в документации. Маленький HowTo по установке.

Вы можете принять участие в обсуждении проекта подписавшись на наш список рассылки.

Если Вы обнаружили ошибку, заполните баг-репорт в базе багов

Мы будем рады, если Вы примете участие в развитии проекта Gela.

Начальная версия может быть загружена здесь. Текущая версия доступна из SubVersion репозитория. Geal ASIS имеет отдельную страничку.

Новости проекта

  • 19 Сен 2008 : Geal ASIS выпущен отдельным пакетом
  • 29 Мая 2008 : Обновление спецификаций предопределеных пакетов языка до стандарта Ада 2005
  • 22 Янв 2008 : Создан отдельный список рассылки
  • 07 Янв 2008 : Перенес ветку ada-2005 в trunk, старый trunk ушел в ada-95. Больше ada-95 не правим, тк ASIS-2005 совместим сверху вниз
  • 31 Дек 2007 : Готов полный синтаксис Ады 2005. Реализовано 12 SI99. C Новым Годом!
  • 22 Ноя 2007 : Мы начали адаптацию ASIS под Ада 2005 с реализации интрефейсных типов (SI99-0006-1). Работа ведется в ветке для Ada 2005
  • 29 Ноя 2006 : Компиляция скалярный типов (кроме десятичных с фиксированной точкой) "в первом приближении"
  • 25 Сен 2006 : Компиляция дискретных типов "в первом приближении"
  • 6 Июл 2006 : Добавлены первые regression тесты для реализации ASIS
  • 24 Июн 2006 : Исходные тексты Gela импортированы в Ten15 SVN

Планы

Детали

Спасибо за помощь

  • Вадиму Годунко за помощь в переводе ASIS на Ада 2005
  • Сергею Рыбину за разьяснения разных вопросов по ASIS

Другие страницы

Сравнения TenDRA и аналогичных проектов

Наименование Лиценщия Контроль переполнение целых Вложенные подпрограммы Исключения Out-аргументы Гибкий стек Прим
TenDRA BSD Есть Есть (глючат?) setjump + long_jump_access Есть local_alloc + untidy_return
LLVM BSD Нет порт gnat
ACK BSD ?
ORC BSD
PCC/DeSmet GPL
PCC BSD
libjit GPL Есть
DIS
  • Контроль переполнение целых: обходиться через преобразование к удвоенной точности + явная проверка диапазона
  • Вложенные подпрограммы: указатели на вл. подпрограммы, трамплины. Полезная для опитизатора фишка помечать переменные доступные из вложенных подпрограмм (visible)
  • Исключения: два механизма (setjump и zero cost exceptions). Полезная для опитизатора фишка помечать переменные доступные после longjump (long_jump_access)
  • Out-аргументы: можно реализовать через указатели, но это менее эффективно, тк нужно создать копию объекта и передать указатель на нее
  • Гибкий стек: нужен чтоб создавать объекты заранее неизвестного размера и/или возвращать их из функций. Обычно используется вторичный стек, но в TenDRA есть хитрые untidy_return, с которыми можно использовать основной стек.
  • Еще, возможно, пригодились бы блокировки, для реализации protected
  • Вставка машинного кода?