Melbourne Meeting 19th June 2023 - Spring4D Q&A with Stefan Glienke

Join us for a Q&A session on Spring4D, its history, uses and future. Stefan Glienke will be online with us to answer your questions.
If you are new to Spring4D or looking for a refresher before the event, Stefan presents an introduction to the library at Devcon Spring4D

Monday, 19th June, 6:00 pm AEST start for 6:15. Stefan’s presentation will start at 7:00 pm.

Zoom details will be posted before the event starts.

1 Like


Tonights meeting will be on Zoom, as well as in person (unfortunately not with Stefan) at the Melbourne Mens Shed.

Note: This is a national meeting, all welcome to attend via zoom (as always really, but…)

Join Zoom Meeting
Launch Meeting - Zoom
Meeting ID: 890 3844 0864
Passcode: 468959

One tap mobile
+61370182005,89038440864#,*468959# Australia
+61731853730,89038440864#,*468959# Australia

Dial by your location
• +61 3 7018 2005 Australia
• +61 7 3185 3730 Australia
• +61 8 6119 3900 Australia
• +61 8 7150 1149 Australia
• +61 2 8015 6011 Australia
• +1 253 215 8782 US (Tacoma)
• +1 301 715 8592 US (Washington DC)
• +1 305 224 1968 US
• +1 309 205 3325 US
• +1 312 626 6799 US (Chicago)
• +1 346 248 7799 US (Houston)
• +1 360 209 5623 US
• +1 386 347 5053 US
• +1 507 473 4847 US
• +1 564 217 2000 US
• +1 646 558 8656 US (New York)
• +1 646 931 3860 US
• +1 669 444 9171 US
• +1 669 900 9128 US (San Jose)
• +1 689 278 1000 US
• +1 719 359 4580 US
• +1 253 205 0468 US
Meeting ID: 890 3844 0864
Passcode: 468959
Find your local number: Zoom International Dial-in Numbers - Zoom

Thank you @sglienke

It was an interesting discussion.

Spring4D repo

Spring4D doco


Links for PowerToys

1 Like
  • Interested in a Study Group for Spring4D

0 voters

Meeting 19/06/2023

Q and A with Stefan Glienke about Spring4D
A bit of a follow up after last year’s symposium presentation.

Quite interesting.
Has Smart pointers.
And a good set of Collections.

Currently at 1.2.5, but in the git repository, there is a development
branch, which is the V2 code. Vincent seems to think V2 is solid.

Pricing and Licensing are very good.
(Free and Permissive)

Vincent mentioned he rarely uses the normal Delphi Generic Collections
any more but rather uses the Spring4D ones.

There was a little bit of wishing for new features in Delphi

Top level generics
presumably something like:
function MyFunction<T>(param1: T):T;

Interface generic definitions.
Not sure how that would look.

type MyInterface<T>= interface
   UUID??? // might be fiddly
   procedure proc1(param1: T);

Bit on Spring4D DI Container (Dependancy Injection)
(More of an advanced topic)

A little bit of discussion about perhaps running a study group
around Spring4D with perhaps some basics and a more advanced
part (DI Containers)



This is already possible - you can give such interface a guid but you should be careful about using that with supports and alike because then you can get from MyInterface<Banana> to MyInterface<Elephant> which is hardly compatible. This is why some people don’t put guids on their generic interfaces

What we were talking during the Q&A was this (which is not possible):

  IMyInterface = interface
    function Get<T>: T;

This is a generic method where the generic parameter is on the method. While these methods are possible on classes or records they are not on interfaces. This is because interfaces in Delphi are always implemented as COM interfaces and those have a fixed list of methods. With a generic method you can have numerous different implementations of those methods depending on the type parameter. Thus as with generics in Delphi they get generated by the compiler when they occur in the code. Some place might call Get<Integer> and another might call Get<string> and thus the compiler would emit the code from the Get method for Integer and for string.
We mentioned that this could be possible if we had interface helpers because then that method could be put into the helper and not part of the interface itself. Then of course the code for the Get<T> could only operate on other members of the interface its a helper for because this method would not be implemented by anyone implementing IMyInterface.

1 Like