FastReport прекращает поддержку старой версии Delphi

С последним релизом больше не поддерживаются старые версии Delphi. Рассказываем, почему. 

FastReport прекращает поддержку старой версии Delphi

Несмотря на то, что мы пользуемся Delphi ещё с 1995 года, он развивается и имеет неоспоримые преимущества в работе программистов. Так же и продукты FastReport для Delphi не стоят на месте и с каждым релизом мы стараемся привнести новые и более современные возможности для разработчиков. Важное обновление: FastReport VCL больше не поддерживает версии Delphi ранее 2010. И мы объясним почему.

Вы можете задаться вопросом: зачем обновлять Delphi и какие преимущества у более современных версий? Главные из них - большое число новых возможностей, обеспечивающих большой рост производительности при создании высококлассных приложений. В этой статье мы попробуем показать, какие важнейшие изменения получил Delphi, начиная с 7 версии и ответим на возникающие в связи с прекращением поддержки старых версий Delphi вопросы.

1. Какие версии больше не поддерживаются в продукте FastReport VCL?

Гарантированная поддержка работоспособности FastReport VCL 2023.2 осуществляется только, начиная с версии Delphi 2010

FastReport прекращает поддержку старой версии Delphi

2. Почему мы отказываемся от старых версий Delphi до Delphi 2010, и что является сдерживающим фактором в разработке для отказа?

Важным этапом развития VCL направления генераторов отчетов стало прекращение поддержки устаревших неюникодных версий. Это поможет нам более интенсивно работать над улучшениями в FastReport и внедрять более современные возможности с каждым релизом. С релиза 2023.1 FastReport VCL поддерживает версии Delphi, начиная с 2010.

Существует несколько факторов, которые повлияли на такое решение:

3. В чем преимущество перехода на версии Delphi выше 2010, и какие технологии это позволит потенциально использовать нам?

Пространства имен для нескольких модулей, цикл for ... in ... do, директива inline для функций и другие возможности оптимизаций кода

В Delphi компилятор позволяет процедурам и функциям иметь директиву inline, присутствие которой повышает производительность. Когда процедура или функция соответствует определенным условиям, компилятор вставляет код именно в точку вызова вместо того, чтобы генерировать обычный вызов. Метод “подстановки в строку” (inlining) может оптимизировать производительность и генерировать код, который будет исполняться быстрее, но ценой увеличения его размера. В этом случае двоичный файл, сгенерированный компилятором, будет больше. Директивы inline, как и другие директивы, используются для объявления и определения функций и процедур.

Возможности быстрого рефакторинга кода (Refactoring code)

Рефакторинг кода — это техника перераспределения и модификации существующего кода с сохранением функциональности. Рефакторинг может ускорить, упростить и улучшить быстродействие и читабельность кода приложения.

Сервис рефакторинга в Delphi анализирует и выполняет операции по перераспределения кода. Сервис также отображает изменения в режиме предварительного просмотра и в панели рефакторинга в нижней части редактора кода. Кандидаты на рефакторинг отображаются в виде узлов дерева, которые можно открыть для просмотра дополнительных элементов, подлежащих рефакторингу. Предупреждения и ошибки также отображаются на этой панели. Доступ к сервису рефакторинга можно получить как через контекстное меню, так и через главное меню.

Модульное тестирование (UNIT TESTING)

В новых версия Delphi присутствует фреймворк тестирования DUnit с открытым исходным кодом для создания и запуска автоматизированных тестов. Данный фреймворк облегчает процесс создания тестов для классов и методов приложения. При использовании в сочетании с рефакторингом эта функция может существенно повысить стабильность вашего приложения.

Благодаря своевременному запуску серии тестов при изменениях в исходного кода проекта можно находить и исправлять ошибки на ранних этапах разработки.

Сквозная поддержка Unicode на уровне языка, библиотеки и среды разработки

Unicode представляет собой стандарт, позволяющий получить компьютерное представление и работать с любой системой записи.

- The Unicode Standard: Version 5.0. 5. ed. Addison-Wesley Professional, 2006. 1472 p

Большое количество наборов символов в разных языках, например, азиатских вариантах, представимы при помощи Unicode. Наиболее часто употребимые кодировки – UTF (Unicode Transform Format) и UCS (Universal Character Set). Более подробная информация по Unicode, можно посмотреть по адресу: http://en.wikipedia.org/wiki/Unicode.

Одним из важных изменений в новых версиях Delphi является то, что теперь строковые типы основаны на UNICODE. Такие типы данных как AnsiString и WideString на основе стандарта ANSI и далее являются работоспособными, как и ранее с учетом размера строк в байтах.

Список изменений для поддержки Unicode:

Нет изменений:

Активная кодовая страница управляет режимом (ANSI или Unicode), так что строки ANSI по-прежнему поддерживаются.

Операции, которые не зависят размера символа:

Многие компании распространяют свои приложения и/или обмениваются информацией со странами, где поддержка Unicode является критической.

Generics

"Generic" - термин, обозначающий общий тип. Он относится к использованию синтаксиса языка для предварительного определения типов данных в определенных типах контейнеров, таких как массивы или коллекции. Дженерики позволяют писать общий код, который работает с определенным типом данных, т.е. с классом или методом класса. Также можно указать тип во время выполнения программы.
Поддержка Generics была введена, начиная с Delphi 2009.

Delphi RTL включает готовые реализации коллекций (определенных в модуле “Generics.Collections”):

Анонимные методы

Анонимный метод — это процедура или функция, не имеющая связанного с ней имени. Анонимные методы — это части кода, которые могут быть связаны с переменными или использоваться в качестве параметров для других методов. Помимо того, анонимные методы могут использовать переменные в том контексте, в котором они определены. Объявление и использование анонимных методов не требует сложного синтаксиса. Синтаксис похож на конструкции замыканий (closures) в других языках программирования.

Новые компоненты VCL (Custom Hints, Ribbon Controls и т.д.)

Поддержка Direct-2D

Direct2D API - программный интерфейс предназначен для взаимодействия с GDI, GDI+ и Direct3D. Direct2D перенаправляет все операции рисования в GPU (Graphic Processing Unit) вместо CPU, а это дает больше ресурсов приложению. Начиная с Microsoft Windows 7 добавили возможность использовать Direct2D: API для 2D графического вывода с аппаратным ускорением, что позволяет обеспечить повышенную производительность при отображении двухмерных объектов, растровых изображений и текста.

В новых версиях Delphi поддержка Direct2D добавлена на уровне IDE.

IDE Insight, Source Code Formatter (сервис форматирования исходного кода), Search task bar

Добавленный новый сервис IDE Insight позволяет ввести имя и выбрать параметры проекта и предпочтения разработчика из списка подходящих вариантов. Поля ввода IDE Insight включают в себя параметры команд, файлов, компонентов и проектов, среди многих категорий.

Среда Delphi предоставляет возможность форматирования кода по шаблонам по умолчанию. Также IDE теперь предлагают полностью настраиваемую службу форматирования кода, которая активируется нажатием клавиш CTRL+D. Это гарантирует, что модули будут отформатированы в соответствии с заранее заданными настройками. Кроме того, можно отформатировать все модули, входящие в проект, используя менеджер проектов.

Фоновая компиляция (BACKGROUND COMPILATION)

В Delphi 2010 компиляция может выполняться в фоновом режиме. Таким образом, можно запустить процесс компиляции в отдельном или параллельном потоке и продолжать работу в IDE во время компиляции проекта.

Например, во время компиляции можно редактировать определенные файлы, устанавливать или изменять точки останова.

Расширенная RTTI

Динамическая идентификация типа данных (англ. run-time type information, run-time type identification, RTTI) предоставляет информацию об объектах, позволяя им взаимодействовать внутри приложения. IDE Delphi при использовании инспектора объектов, редактора кода и инструментов моделирования, является еще одним хорошим примером использования RTTI.

В других языках программирования при их эволюции и развитии изменилось то, как мы программируем, и приложения, созданные на Java и .NET, хорошо иллюстрируют эти инновации, поскольку современные языки программирования предлагают новые уровни динамического взаимодействия. Delphi 2010, благодаря широкой поддержке RTTI в Delphi для Win32, теперь обладает всей мощью .NET и Java. Новая система RTTI (RTTI.pas) является полностью объектно-ориентированной и позволяет создавать и реализовывать взаимодействия между объектами более динамичным способом.

Перегрузка операторов

В новых версиях Delphi существует возможность перегружать некоторые функции или "операторы" в объявлениях записей (records). Имена функций-операндов соответствуют символьному представлению в исходном коде.

“Помощники” классов (Class Helpers)

“Помощник” — это тип класса, который вводит дополнительные методы и свойства, связывая их с другим классом. Данные методы и свойства могут использоваться в контексте ассоциированного (или производного) класса. “Помощники” классов — это способ расширения класса без его наследования. “Помощник” класс вводит дополнительную область видимости только тогда, когда компилятор окончательно определяет имя идентификатора.

Strict Private и Strict Protected

В новых версиях Delphi есть две опции, которые определяют видимость атрибутов класса: strict private и strict protected.

Strict private: атрибуты класса являются видимыми только внутри класса, в котором они декларированы. Эти атрибуты не видны из методов, декларированных в том же модуле, или тех, которые не являются частью класса.
Strict protected: определяет, что атрибуты класса доступны в потомках.

Точки останова в потоках, «заморозка/разморозка» потоков

Новый менеджер памяти и новые функции RTL

Были улучшены некоторые функции RTL для повышения производительности. Новый менеджер памяти FASTMM для Win32-приложений позволяет приложениям Delphi 2006 работать лучше и обнаруживать утечки памяти, просто объявив ReportMemoryLikeonShudown := True в любой части программного кода. Начиная с Delphi 2006, помимо возможности обнаруживать утечки памяти, скорость работы приложений также значительно улучшилась.

Классы для объектно-ориентированного ввода/вывода в файлы и директории

Начиная с Delphi 2010 добавили новый модуль IOUtils, включающий три статических класса: TDirectory, TPath и TFile. В свою очередь данные классы раскрывают ряд статических методов, полезных для задач ввода-вывода. Большинство методов совместимы по функциям и подписи с классами .NET System.IO.Directory, System.IO.Path и System.IO.File.

4. Что делать тем кто хочет FastReport VCL с поддержкой Delphi 7-2009 (будет ли возможность скачать FastReport VCL до версии 2023.2, где и как скачать если будет)?

По запросу в техническую поддержку вы можете получить последнюю версию FastReport VCL, которая была с поддержкой Delphi 7-2009.

5. Как будет осуществляться техническая поддержка для FastReport VCL с поддержкой Delphi 7-2009 (ее не будет или будет платной, будет ли переходной период)?

Так как теперь мы не гарантируем работоспособность в версиях IDE до Delphi 2010, техническая поддержка по данным вопросам, связанным этими версиями, будет прекращена.

Критические баги, которые приводят к полной неработоспособности FastReport VCL с поддержкой Delphi 7-2009, по запросу могут быть исправлены по усмотрению разработчика.

Отказ от устаревших версий Delphi 7 - Delphi 2009 позволит нам перераспределить ресурсы команды разработчиков для более эффективной разработки, и уменьшить время реализации новой функциональности, а также уделить больше времени найденным неисправностям в FastReport VCL, что в свою очередь приведет к более стабильной работе программного продукта. Наша цель - создать мощный и быстрый генератор отчетов для всех разработчиков, и мы уверены, что это шаг поможет нам сделать наш продукт еще лучше.