[fpc-devel] Re: [fpc-l] type discussion

Marco van de Voort marcov at stack.nl
Thu Jun 2 17:47:07 CEST 2005

> Marco van de Voort wrote:
> > Some of these target functionality (specially in the linking section) might require restructures
> > related to
> >     * introduction of an internal linker for some core platforms (no more LD)
> >     * Rewrite of module (unit) handling
> Yes, these would be great, IMHO.

> > For the rest, improve RTL/FCL compability and extend them in general, and of course fixbugs.
> > 
> >>Beside of compatibility towards Delphi or MacPascal or others FPC should be
> >>open to other modifications/extensions (maybe Delphi one day copies FC a bt
> >>:-), and not always the other way round)
> Maybe a few things should be borrowed from RemObjects Chrome, such as
> -- Class Contracts
> http://www.remobjects.com/page.asp?id={DFA00D71-D5A4-40A3-9FD0-251899EB30D8}
> I like the 'require/ensure' aproach.

Glorified asserts. This is inventing syntax for marketing reasons.

> It makes the code more robust and more debuggable, IMHO

Nope. It just is a limited form of assert with special syntax. Definitely
does not mark the trival syntax test.

> -- Generics
> http://www.remobjects.com/articles/?id={A1D08EE3-0D9E-4828-AFB3-B2C1E772186E}

> I am not sure if Generics could be done in FPC.

Probably yes, however it will not be easy. IMHO Generics/templates are
definitely on the list, but don't expect it anywhere soon, unless there is
massive help.
> -- Virtual Properties and Events
> http://www.remobjects.com/page.asp?id={10E153AD-E05F-48CE-9CED-BCED5C9CDE99}

Understandable. However lots of performance issues. One could mitigate some
of these by e.g. requiring virtual properties to only use static methods and
adding optimizations.

RemObject/.NET probably either don't care about speed, and/or have some 
global optimalisations that makes adding this kind of stuff not to hurtful.

Probably a bit of both.

IMHO not a definite no, it would be either unoptimal, or a lot of work.

> -- Enhanced Multicast Events
> http://www.remobjects.com/page.asp?id={CC9C4828-9E49-4C41-AFD9-0BFFA4E9C3D3}
> Inline variable initializers, such as:
> type
>    TSomethingElse = class(TSomething)
>    private
>      FInteger: Integer = 15;
>      FBoolean: Boolean = False;
>      FString: String = 'SOME TEXT';
>      {etc}
>    protected
>    public
>    published
>    end;

Can be done otherwise (simply init it). -> Syntactic sugar.
> Similarly, for
> function Something(...): Boolean = False;
> var
>    Integer1: Integer = 15;
>    Boolean1: Boolean = False;
>    String1: String = 'SOME TEXT';
> begin
> end;

Useless IMHO. Equal to above (initialising in syntax what can be inited normally)
> Procedure Something(Out AInteger: Integer = 12; ....);
> var
>    Integer1: Integer = 15;
>    Boolean1: Boolean = False;
>    String1: String = 'SOME TEXT';
> begin
> end;

Same. Don't even add to productivy
> >>a way to write integer constants in any base, not only
> >>binary/octal/hexadecimal (not so important, but easy to implement)
> > 
> > Rarely used. Specially since more than base 36 becomes a notational 
>  > problem. However it has been brought up before.
> If someone contributes the code, why not. 
> It does not hurt, IMHO.

Because the more features, the more involved maintainance of the compiler
becomes. So keep that work for features that are worth it.

I don't like this one, but it might already exist (in mac mode), since ISO
Paslla has this.

More information about the fpc-devel mailing list