1 (изменено: Freeman, 05.12.2020 в 17:35)

Тема: План развития SDK (2020)

Хочешь убить проект — строй планы. Я пока потерял интерес к Delphi для KolibriOS, хочу заниматься своими проектами. Но даже это просто хотелки, здоровья не хватает.

План развития таков:

  • Добавить менеджер(ы) памяти, процедуры FillChar и Move. Это единое логическое изменение. Какие версии процедур добавлять, пока не знаю. Сейчас есть желание, чтобы они были написаны на Паскале.

  • Добавить строки с кодовыми страницами, модуль Helpers.

  • После добавления строк можно задуматься о компилируемости под Delphi XE5 и Rio.

  • Развить SysUtils стандартными функциями: IntToStr, StrLen...

  • Добавить стандартный файловый ввод-вывод, чтобы можно было портировать DCU32Int.

  • Добавить заголовочные модули для всех библиотек KolibriOS в стандартной поставке.

  • Добавить ООП на object-ах, реализовать некоторые простые классы, типа TFileStream. Коллекцию и список можно портировать с CoreLite.

  • ООП на основе ключевого слова class планируется только для исключений. Объекты дают больше гибкости и экономят код, что важно для Колибри.

Себя я вижу только в качестве разработчика строк и ООП, а также как автора адаптаций кода с форума (раз уж pull request-ов не дождаться). Следующая версия SDK выйдет в сентябре, если вообще выйдет под моим авторством.

После сентября — разработка VKL:

  • Реализовать базовые классы окна, кнопки и других (?) графических элементов, реализуемых ядром.

  • Реализовать ОО-версии компонентов из BoxLib. Добавленные на предыдущем этапе заголовочные модули станут их основой.

  • Реализовать обертки для стандартных диалогов: выбор файла, цвета и прочих (?). Возможно, просто функциями.

Добавлено 2020-07-06 в 01:31

Главная проблема SDK — мы не видим своего пользователя.

2

Re: План развития SDK (2020)

Freeman пишет:

Главная проблема SDK — мы не видим своего пользователя.

А его и нет просто.
А откуда бы он взялся?

Вот, к примеру, в данный момент некоторые функции(Write\WriteLn) стали стандартными.
Но в релизах по-прежнему старая версия, с нашим изначальным "велосипедом".
При отсутствии RoadMap как предполагается использовать данное SDK?
Можно переделать свой существующий код под теущую версию из релиза.
Потом дождаться следующего релиза, где функции станут стандартными и снова переделывать свой код.
Кому-то захочется двойную работу делать?

Если функции не стандартные, то где документация по их использованию?
Если планируется привести всё в порядок и сделать по стандарту, то надо об этом где-то писать, обычно пишут в RoadMap или хотя бы в описании проекта.


Где-то здесь на форуме проскакивала информация о планах внедрения куда-то(в ВУЗы?) SDK, Кантора, ещё-чего-то. Я не помню дословно.

Вот тут пишут

Если повезёт, XD Pascal будет внедрён, наряду с BeRo Tiny Pascal, в лабораторный практикум по курсу конструирования компиляторов в МГТУ им. Н.Э. Баумана.

в частности тут немного уточняется, как именно это происходит.

Автор BeRo Tiny Pascal — Benjamin «BeRo» Rosseaux, это который из  Farbrausch.

Ну, в общем, как мне кажется, развивать полезные вещи — это просто замечательно!

Добавлено 2020-08-21 в 15:19

Freeman пишет:
  • ...

  • Добавить ООП на object-ах, реализовать некоторые простые классы, типа TFileStream. Коллекцию и список можно портировать с CoreLite.

  • ООП на основе ключевого слова class планируется только для исключений. Объекты дают больше гибкости и экономят код, что важно для Колибри.

Насколько я понимаю, для ООП на object-ах ничего дополнительного реализовывать не нужно.

Например, такой код сейчас уже и так работает:
program OOP_Object;

uses
  CRT;

type
  TMyObject = object
  private
    FName: PAnsiChar;
  protected
    function GetBackColor: Byte;
    function GetForeColor: Byte;
    procedure SetBackColor(Value: Byte);
    procedure SetForeColor(Value: Byte);
  public
    property BackColor: Byte read GetBackColor write SetBackColor;
    property ForeColor: Byte read GetForeColor write SetForeColor;
    property Name: PAnsiChar read FName write FName;
    procedure Hello;
  end;

  function TMyObject.GetBackColor: Byte;
  begin
    Result := TextBackground;
  end;

  procedure TMyObject.SetBackColor(Value: Byte);
  begin
    TextBackground(Value);
  end;

  function TMyObject.GetForeColor: Byte;
  begin
    Result := TextColor;
  end;

  procedure TMyObject.SetForeColor(Value: Byte);
  begin
    TextColor(Value);
  end;

  procedure TMyObject.Hello;
  begin
    WriteLn('Hello, ', FName, '!');
  end;

var
  MyObject: TMyObject;

begin
  InitConsole('Hello');
  with MyObject do
  begin
    BackColor := White;
    ForeColor := LightRed;
    Name := 'World';
    Hello;
  end;
end.

Что касается ООП на основе ключевого слова class, то тут нужно реализовать TObject и его методы.

То есть, вот это:
  TObject = class
    constructor Create;
    procedure Free;
    class function InitInstance(Instance: Pointer): TObject;
    procedure CleanupInstance;
    function ClassType: TClass;
    class function ClassName: ShortString;
    class function ClassNameIs(const Name: string): Boolean;
    class function ClassParent: TClass;
    class function ClassInfo: Pointer;
    class function InstanceSize: Longint;
    class function InheritsFrom(AClass: TClass): Boolean;
    class function MethodAddress(const Name: ShortString): Pointer;
    class function MethodName(Address: Pointer): ShortString;
    function FieldAddress(const Name: ShortString): Pointer;
    function GetInterface(const IID: TGUID; out Obj): Boolean;
    class function GetInterfaceEntry(const IID: TGUID): PInterfaceEntry;
    class function GetInterfaceTable: PInterfaceTable;
    function SafeCallException(ExceptObject: TObject;
      ExceptAddr: Pointer): HResult; virtual;
    procedure AfterConstruction; virtual;
    procedure BeforeDestruction; virtual;
    procedure Dispatch(var Message); virtual;
    procedure DefaultHandler(var Message); virtual;
    class function NewInstance: TObject; virtual;
    procedure FreeInstance; virtual;
    destructor Destroy; virtual;
  end;
Freeman пишет:

Главная проблема SDK — мы не видим своего пользователя.

Может есть смысл попросить кого-то потестировать? Предложить, например, в той же группе ВК или ещё каком-то форуме.
Ну, то есть, скачать релиз, попробовать что-то скомпилировать, создать что-то своё, запустить это в KolibriOS.
Если у них возникают какие-то проблемы — сообщить о них, и тогда будем думать, как дополнить\исправить SDK.

Re: План развития SDK (2020)

И сколько пунктов этого плана к прошедшему месяцу реализовано?

4

Re: План развития SDK (2020)

А сколько было оплачено и согласовано с моей основной работой?

Стоимость разработки SDK
Freeman пишет:

Как говорил в чате, стоимость разработки Delphi SDK для KolibriOS начинается от 100 000 ₽.

Лучше не задавать провокационные вопросы, а следить за развитием по коммитам на GitHub. За время моего отсутствия стараниями 0CodErr развитие пошло в другую сторону. Оформлю и добавлю на GitHub по мере возможности.