LINUX.ORG.RU

fpc/pascal текущее состояние версий + AI

 , , , ,


0

3

добрый день, товарищи-колдуны!

на текущий день состояние с версиями - не совсем понятно (мне).
судя по ссылкам - работа идет:
github
gilab

на данный момент:

3.2.2 release
3.2.4 rc1/rc2
3.2.3
3.3.1

внимание вопросы:
вопрос1: кто в теме, пояснить что к чему?
вопрос2: кто-что использует, текущие/для разработки fpc/глюки-особенности итд
спасибо

p.s.
понятное дело, что текущая рабочая версия fpc-3.2.2 (по рекомендация офсайта).
естественно, тема связана непосредственно с Lazarus-IDE
хотелось-бы услышать других «колдунов» по поводу «темы топика».

add сопутствующая тема
fpc/AI

★★★★★

Последнее исправление: sunjob (всего исправлений: 8)
Ответ на: комментарий от firkax

прочитайте хотя-бы одну страницу, а уже потом высказвайтесь... :о)

sunjob ★★★★★
() автор топика
Ответ на: комментарий от seiken

RAII нет, ну и хрен с ним,

Во Free Pascal’е у классов есть и конструктор и автоматически вызываемый деструктор.

Объекты уничтожаются вручную (в finally блоке), или автоматически, если содержатся в контейнере навроде TObjectList или TComponentList. GUI-объекты (panel, label, combobox, button и другие) уничтожаются автоматически.

считаем, что все исключения - ошибочные ситуации, требующие ручного вмешательства пользователя, или не требующие, но утечку ресурсов толерируем (ГУЙ можно всегда перезапустить)

А пользователям такое понравится? Во Free Pascal’е есть try/except для обработки ошибок и try/finally для освобождения ресурсов. Есть ещё finalization раздел у модуля.

anonymous
()
Ответ на: комментарий от sunjob

Про ИИ для ускорения выпуска FPC.

В начале лета, не помню точно, в email-списке разработчики Lazarus’а выразили недовольство разработчикам FPC затягиванием выпуска новых версий. (Lazarus и FPC делают разные люди и не согласуют между собой работу никак)

Разработчики FPC сказали что проверяют нет ли ошибок. На что разработчики Lazarus сказали «сколько можно проверять уже два года проверяете. Или вы выпускаете 3.2.4, или мы делаем форк FPC».

Разработчики FPC испугались и выпустили 3.2.4 release candidate, однако на этом дело и остановилось.

Дело в том, что FPC попал в известную ловушку общественных open source проектов: пока программу мало кто использует, она разрабатывается быстро, но как только программа становится популярной, то разработка замедляется до нуля, потому что разработчики боятся сделать ошибку. Если вдруг будет ошибка, а много кто использует программу, то у всех программы поломаются. Поэтому разработчики просто боятся делать выпуск и сидят.

В версии 3.3 уже давно анонимные функции и ссылки на функции, и нормально работает, но версия 3.4 похоже не будет выпущена никогда. Потому что боятся.

anonymous
()
Ответ на: комментарий от sabacs

Нет. Но можно организовать, вроде бы

Destroy - это деструктор

{$ifdef FPC} {$mode objfpc}{$H+}{$J-} {$endif}
{$ifdef MSWINDOWS} {$apptype CONSOLE} {$endif}

uses
  SysUtils;

type
  TMyClass = class
  private
    InternalStuff: TObject;
  public
    constructor Create;
    destructor Destroy; override;
  end;

constructor TMyClass.Create;
begin
  inherited Create; // Call the ancestor constructor at the beginning
  InternalStuff := TObject.Create;
  Writeln('TMyClass.Create');
end;

destructor TMyClass.Destroy;
begin
  Writeln('TMyClass.Destroy');
  FreeAndNil(InternalStuff); // will call InternalStuff.Destroy
  inherited Destroy; // Call the ancestor destructor at the end
end;

var
  C: TMyClass;
begin
  C := TMyClass.Create;
  try
    // use C
  finally
    FreeAndNil(C); // will call C.Destroy
  end;
end.
anonymous
()
Ответ на: комментарий от sabacs

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

Но когда инстанс уже сконструирован, освобождать в общем случае его надо руками.

seiken ★★★★★
()
Ответ на: комментарий от anonymous

Ну это понятно, это примерно где-то рядом такой же костыль, как в питоне с менеджерами ресурсов и «with».

Если что, я не жалуюсь.

seiken ★★★★★
()
Ответ на: комментарий от seiken

тут читал в инете, видимо имеется в виду, если в конструкторе генерится исключение, деструктор вызывается автоматом

Да это так, но я то имел в виду что-то типа RAII.

sabacs
()
Ответ на: комментарий от anonymous

Есть ещё finalization раздел у модуля

а «сначало» идет инициализация. т.е. эти две секции работают в паре: инициализируем а потом утилизируем то, что создали в «начале».

sunjob ★★★★★
() автор топика
Последнее исправление: sunjob (всего исправлений: 1)
Ответ на: комментарий от anonymous

в статье, по ссылке, об этом и говориться.
только одна из причин не «боязнь» выпуска, а обычная нехватка рессурсов, людей, времени, выгорание, итд, упоминается так-же особенность/методы/рулежка «выпускающего редактора»...
(у меня сложилось «такая ситуация»)

sunjob ★★★★★
() автор топика
Ответ на: комментарий от sunjob

Да. Всё же, по моим наблюдениям, нехватка manpower вовсе не в разработке. Например, не было никаких оснований задерживать bugfix 3.2.4 на 2 года. Разработчики говорят что они долго перепроверяли, как будет работать на разных платформах, не портит ли совместимость с Delphi. А это и есть боязнь какой-то неожиданной ошибки.

А новые фичи в язык добавляют не сами разработчики языка, а сторонние люди, как например, анонимные функции, ссылки на функции. Это всё уже давно готово, но разраюотчики не берут на себя ответственность за выпуск.

Совсем по-другому устроена разработка в Lazarus. Там у них выпуски по графику, примерно раз в год новая версия. Сначала она глюкавая, постепенно отлаживают. Зато относительно быстро развивается, поддерживает Electron, Android. А разработчиков в Lazarus даже ещё меньше чем во Free Pascal Compiler.

anonymous
()
Ответ на: комментарий от anonymous

долго перепроверяли, как будет работать на разных платформах, не портит ли совместимость с Delphi

ну да, это тоже было... упустил из виду :о)

sunjob ★★★★★
() автор топика
  • Markdown
Пустая строка (два раза Enter) начинает новый абзац. Знак '>' в начале абзаца выделяет абзац курсивом цитирования.
Внимание: прочитайте описание разметки Markdown.
Используйте Ctrl-Enter для размещения комментария