Jump to content
David Schwartz

upcoming language enhancements?

Recommended Posts

Has there been anything mentioned publically about the language enhancements supposedly being added to the pending Delphi update?

 

I think something way back mentioned nullables as a good possibility. Anything else?

Share this post


Link to post
24 minutes ago, David Schwartz said:

Has there been anything mentioned publically about the language enhancements supposedly being added to the pending Delphi update?

Which enhancements are you referring to exactly?  The only new language enhancements added recently were Managed Records in 10.4, and Inline Variables and Type Inference in 10.3.  If there are any other new language enhancements pending on the horizon, they are not public knowledge.  If you want to know if there is anything new coming up, then you should join the Delphi 11 beta.

Quote

I think something way back mentioned nullables as a good possibility. Anything else?

IIRC, Embarcadero has already gone on record stating Nullable Types are not being added to the language anytime soon.  But, they can be implemented manually using managed records now (well, more efficiently then the original approach from years past, anyway).

Edited by Remy Lebeau

Share this post


Link to post

Well, the roadmap lists "Language enhancements" as the first thing in the list for this upcoming release, but I've not seen anything specific. They often start discussing more details as the public beta gets rolling.

 

A lot of stuff they list has resulted in some discussions with details being released. The language enhancements are almost always a surprise. But for them to actually mention it suggests they've got something more significant planned.

 

<RANT>

Delphi seems so far behind the curve when it comes to newer language features found in most contemporary languages that it has become silly.


I'm tired of people who fancy themselves as highly muscular defending the lack of a jack for this type of car because it just wouldn't be the same if you didn't have to lift the car yourself to change a tire. Those "other cars" need a jack, but people who use "this car" ... BAH! We don't need no stink'n jacks! Just work out more and bulk-up those muscles! 

 

Ya, ya, ya ... and people wonder why the use of THIS type of vehicle keeps going down year after year. The vendor should put an effing jack in the trunk and anybody who doesn't want to use it can just forget it exists.

 

Makes you wonder about all of the macho-men who objected to the use of replacing cranks on cars to get the motor running with electric starters. Delphi would be the last auto maker left without electric starters, because it would be seen as "too much like a Ford" or some other vehicle!

 

There are around a dozen things that are found in most contemporary languages today that are missing from Delphi, and the only justification I'm aware of is because a lot of Dephi people like to scream, "we don't need no stink'n xyz or it would be too much like some other language!" Well, ya know what? All of those OTHER languages have GROWING USER BASES! Delpih keeps shrinking. Maybe saving time by having common-sense syntactic stuff found in most languages today is more important than some people think. Programmers DO LIKE TIME-SAVING FEATURES, ya know?

 

For example, I tried using IfThen in a few places this past week and it got me into trouble ... when are we going to get a trinary operator to avoid having both options evaluated? If you think it's too much like something in some other language, just don't use it. You're free to use as many lines of code to replace a simple expression as you like. Nobody is gonna stop you! If that's not enough, switch to assembly language. (Remember, high-level languages evolved to SIMPLIFY programming vs. what assembler requires!)

 

You can short-circuit multiple expression evaluations using logical operators (AND, OR) but that doesn't work for unassigned objects and in method calls that have side-effects, among others.

 

Many OOP languages are now allowing a '?' to be put after assignment statements on references to objects that may be null to allow them to only work if the references are non-NULL.

 

These are very common use cases that have evolved simple syntactic solutions in other languages to avoid multiple lines of code to address them otherwise. They're only cryptic to read if you never write code that uses them. (I rarely use things from the heap that require the ^ operator, so that stuff looks cryptic to me. But I'd never advocate that it be removed from the language for that reason!)

 

I'm just hopeful we might be seeing some of this stuff finally showing up in Delphi (10-20 years later than other languages). 

 

I was looking at some of the code I've written in the past few days, and a lot of it is so highly idiomatic in given contexts that you'd think there would be a way of condensing it into simpler expressions without having to resort to stuffing it into subroutines or adding it to helper classes. That would only hide it away rather than simplify how it's expressed anyway. I have a feeling I'll be long gone before programming languages begin to incorporate features that let you reduce common idiomatic expressions into new syntactic structures other than subroutines. (Generics barely scratch the surface, and have a ton of limitations.)

 

A lot of times we can't even use subroutines to simplify things in Delphi because you cannot use property names in var and out parameters on method calls, so you can't create a generic routine to pass back values to properties. You have to write a routine that's tightly-coupled to the class so it can set the properties internally, making what it's doing far more opaque than is needed. Or you just need a separate assignment statement explicitly setting property values one by one

 

I was looking at some C++ recently ... I don't recognize any of the crap that I guess is now needed to get it to do what you need. it looks nothing like it did 20 years ago. I guess they call that "progress".

</RANT>

Edited by David Schwartz
  • Like 2

Share this post


Link to post

Yeah, all it says is, "Add Delphi language extensions for increasingly powerful coding" 

 

That's more than was said about ALL language extensions added in the past few releases.

 

Given that it's singled-out in this release -- at the very top of the list, no less -- suggests maybe more is planned than one might expect.

 

 

I'm also hoping they'll provide a way to generate code for smaller ARM platforms like Raspberry Pi devices and a wider array of Linux environments.

 

15 years ago, a PC with the power that a RPi 4 with a 1.2GHz CPU and 4GB of SD storage has on it was pretty damned expensive, and we used D4-D7 to write code for smaller environments. Given that a lot of that stuff is programmed using interpretive languages like Python, maybe Delphi could emit javascript/ASM (whatever it's called) that's easier to host on smaller platforms like this.

  • Like 1

Share this post


Link to post
5 hours ago, Darian Miller said:

This future releases page has everything I know about RAD Studio 11 (formerly known as 10.5) that can be said publically.  https://github.com/ideasawakened/DelphiKB/wiki/Future-Releases-for-RAD-Studio-and-Delphi

 

Unfortunately, that roadmap is pretty much obsolete, there is no newer one and anyone who knows what is cooking is not at liberty to say.

Share this post


Link to post

I don't expect much from the new version, but a properly implemented iif statement would improve my code here and now.

Share this post


Link to post

Ternary operator is just a sugar for me. I find myself using it pretty rarely because it often grows so much that it starts looking monstrous. Much more useful is || construction from C-like langs that frequently replaces ternary:

res = smth ? smth : default

and

res = smth || default

 

Async/await is what I use everyday, everywhere so they're my favorites.

Edited by Fr0sT.Brutal
  • Like 1

Share this post


Link to post
1 hour ago, Dalija Prasnikar said:

Unfortunately, that roadmap is pretty much obsolete, there is no newer one and anyone who knows what is cooking is not at liberty to say.

It's not obsolete I received as the answer from Embarcadero a couple of months ago when asked on a webinar. They feel there is no need to inform us ahead. I wonder do they actually have a plan what they would like to deliver in Delphi 11?

  • Confused 1

Share this post


Link to post
20 minutes ago, Lajos Juhász said:

I wonder do they actually have a plan what they would like to deliver in Delphi 11?

There definitely is a plan! The problem is how much of that plan turns into reality.

  • Like 2

Share this post


Link to post
4 hours ago, Fr0sT.Brutal said:

Ternary operator is just a sugar for me. I find myself using it pretty rarely because it often grows so much that it starts looking monstrous. Much more useful is || construction from C-like langs that frequently replaces ternary:

res = smth ? smth : default

and

res = smth || default

 

Anything along that line would be fine by me. The IfThen methods don't work in all cases and there's no alternative.

Share this post


Link to post

I think all communication budget from EMB is spend by the marketeers who are putting out the worthless blogs. 
 

@Marco Cantu

We did not get an invite for the Beta, nice window to subscribe by the way, 3 days???,  called , we would get an invite a week ago, still no email from EMB.

I really don't think they are gonna make it for long with this kind of attitude towards their customers. 

 

Why not  publish some details about the coming Delphi 11 ?

When we get a decent version of 10.4 ? 

 

 

 

 

Share this post


Link to post
1 hour ago, mvanrijnen said:

When we get a decent version of 10.4 ? 

10.4 got all the updates it was supposed to. There is always a chance it may receive some additional hotfix, for some really, really critical issue, but not very likely.

Share this post


Link to post

Only the updates did not fix the problems they supposed to do. 

LSP/Codecompletion  malfunctioning.

If  i look the the bugs which are still open and/or being reported it does not sound like a reasonable finished product.  

 

Like delivering a car from which the weels unexpected fall of. 

If you'r lucky you don't have a problem, i you'r unlucky you end the day after a few hours withouth wheels. 

 

Refactoring which stops working, suddenly freezes of the IDE, suddenly exiting of the IDE,  making a mess of project files etc etc. 

Inserting events wrong in the sourcecoude (doubleclicking an event in the property inspector), i can go on and on.

 

Very slow "getit" a failed ripoff from the packagemanagement from other IDE's,  not working GetIt sometimes.
 

Edited by mvanrijnen
  • Sad 1

Share this post


Link to post
5 minutes ago, mvanrijnen said:

Only the updates did not fix the problems they supposed to do. 

LSP/Codecompletion  malfunctioning.

If  i look the the bugs which are still open and/or being reported it does not sound like a reasonable finished product.  

 

Like delivering a car from which the weels unexpected fall of. 

If you'r lucky you don't have a problem, i you'r unlucky you end the day after a few hours withouth wheels. 

 

Refactoring which stops working, suddenly freezes of the IDE, suddenly exiting of the IDE,  making a mess of project files etc etc. 

Inserting events wrong in the sourcecoude (doubleclicking an event in the property inspector), i can go on and on.

Unfortunately, not all bugs get fixed in updates. 

 

LSP is a complex feature and it will take time to solve all issues. That is why you can still use Classic Code completion if the LSP is too troublesome.

Share this post


Link to post

The classic code is unusable in big projects with many lines of sourcecode, and causes the IDE completely unusable.

We have to choose between to bad options. Third option is disable all function in the IDE.

 

Thats not why we pay a lot of money each year. 

 

Big problem is they bring updates which do not fix the bugs they say they do. So apparently they have to little people working on the product, or just shit on their customers. 

Edited by mvanrijnen

Share this post


Link to post
1 hour ago, Dalija Prasnikar said:

LSP is a complex feature and it will take time to solve all issues.

Please, has been announced since around Godzilla..

Share this post


Link to post
9 minutes ago, FredS said:

has been announced since around Godzilla..

Well, obviously announcing is easier than implementing.

Share this post


Link to post
1 minute ago, Uwe Raabe said:

is easier than implementing.

So are Roadmaps 🙂

Share this post


Link to post
6 hours ago, Lajos Juhász said:

I wonder do they actually have a plan what they would like to deliver in Delphi 11?

Of course they do.  But nothing that can be talked about publicly at this time.

Share this post


Link to post

The last couple of times I tried to get a beta, the code was released before the beta team responded to my request. So I don't bother asking now.

Share this post


Link to post
9 hours ago, Dalija Prasnikar said:

Unfortunately, that roadmap is pretty much obsolete, there is no newer one and anyone who knows what is cooking is not at liberty to say.

The 10.5 info is still applicable.  (But now version 11)

 

How much of this actually gets released into the next version is debateable.  (And how much that is released is actually usable without having to wait for a patch or two.)

Anticipated New Features 10.5

  • Delphi Language Extensions
  • Consolidation of multiple debuggers
  • Improved Delphi language support for LLDB
  • Math Performance Improvements
  • "Significant work" around high-DPI support in IDE, target of "Full" HighDPI support
  • VCL Style support in the designer
  • FireMonkey Designer improvements
    • Fill in missing features like alignment guides
  • Multi-developer productivity
  • IDE Onboarding Experience
  • Improvements to the IDE source control integrations
  • Command-line tools installer for Windows
    • Intended for build-server targets (no longer need full IDE on build server)
  • C++ Visual Assist support
  • C++ new Win64 Linker
  • New target platform: macOS ARM (based on Apple Silicon CPUs)
  • Quality focus areas:
    • VCL
    • FireMonkey
    • C++ Toolchain
    • Delphi Compiler
    • Data Connectivity
    • RAD Server

Share this post


Link to post
1 hour ago, David Schwartz said:

The last couple of times I tried to get a beta, the code was released before the beta team responded to my request. So I don't bother asking now.

 

I imagine if you asked today, you would get access before the week is out and have time to play with the beta before it gets released.  No one really knows the expected release date (probably most at Embarcadero don't even know yet) ... but you can make an educated guess.   Their current sale ends August 31 and last year 10.4.1 was released September 2 and their latest marketing says to "buy now and get the next version as soon as it's released."    There's nothing saying they couldn't ship RADStudio 11 tomorrow, but if you have a little free time to test the Beta, it might be worth your time and you just might find a bug or two that can get fixed before release to make the version even better.

 

I haven't had time to test the Beta much myself yet so I don't know how close it is.  I was hoping to find some time this week.  My wish would be that it wouldn't ship until it's actually ready...even if that means next year and we keep patching 10.4.2 until then.

 

 

  • Like 1

Share this post


Link to post
15 hours ago, Darian Miller said:

My wish would be that it wouldn't ship until it's actually ready

We know they never do that but rather hope they be ready when they ship which also as we know it not the case either.

  • Like 6
  • Thanks 1
  • Haha 3

Share this post


Link to post

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

×