Отличия PascalABC.NET от Pascal ABC

Оболочка и компилятор

  1. Возможность создавать .exe и .dll-файлы.
  2. Необходимость установки платформы .NET.
  3. Совместимость создаваемого кода с другими .NET-языками.
  4. Возможность запуска нескольких программ из оболочки одновременно.
  5. Возможность менять язык интерфейса "на лету", легкая возможность добавления новых языков интерфейса.
  6. Возможность подключать дополнительные plug-inы, расширяющие возможности оболочки.
  7. Возможность создания front-end компиляторов других языков программирования.
  8. Генерация промежуточных PCU-файлов, хранящих дерево программы, для ускорения компиляции и высокоуровневых преобразований исходного кода.
  9. Предупреждения при компиляции.
  10. Два способа запуска приложения из-под оболочки: со связью и без связи с оболочкой.

Язык

Добавлено

  1. Динамические массивы (array of integer).
  2. Статические методы классов.
  3. Перегрузка операций.
  4. Операции += -= для событий .NET и для процедурных переменных.
  5. Операции += -= *= для целых и  += -= *= /= для вещественных.
  6. Подпрограммы с переменным числом параметров.
  7. Параметры по умолчанию.
  8. Вызов функций из неуправляемых dll.
  9. Ряд стандартных типов данных.
  10. Операция new (ident := new type_name(params);).
  11. Операция typeof .
  12. Директива компилятора $reference для подключения внешних сборок.
  13. Директива компилятора $resource (пока только для подключения графических файлов в качестве ресурсов).
  14. Директива компилятора $apptype для задания типа приложения.
  15. Использование uses для подключения пространств имен .NET.
  16. Вид доступа internal (наряду с public, private, protected).
  17. Атрибут final для запрета наследования от данного класса.
  18. Инициализация переменных: var a: integer := 1;
  19. Инициализация переменных: var a := 1;
  20. Методы в записях.
  21. Символ & для имен, совпадающих с ключевыми словами.
  22. Интерфейсы interface.
  23. Инициализаторы полей в классах и записях.
  24. Оператор foreach (пока не работает для обычных массивов).
  25. Оператор lock.
  26. Объявление локальных переменных в блоке.
  27. Обобщенные классы (generics).
  28. События event.
  29. Методы расширения.

Изменено

  1. Тип string является строкой произвольной длины.
  2. Индексация string с 1, директива переключения на индексацию с 0.
  3. Описание виртуальных функций требует указания ключевых слов virtual, override.
  4. Процедура write выводит любые типы.
  5. Индексные свойства с любым количеством индексов.
  6. Структурная эквивалентность типов оставлена только для делегатов (процедурных переменных), динамических массивов, типизированных указателей и множеств.
  7. Множества на базе произвольных типов (set of string).
  8. Запрет использования указателей на управляемую память.

Выброшено

  1. Операции с указателями.
  2. Тип complex.

Библиотеки

  1. Доступны все библиотеки платформы .NET 2.0.
  2. Изменения в модулях GraphABC, ABCObjects, RobotTaskMaker, DrawmanTaskMaker, PT4TaskMaker.
  3. Ликвидация модулей PointRect, Events, VCL, Containers, Utils.