https://computerhistory.org/blog/adobe-photoshop-source-code...
I'd love to be able to take it up again, and this document looks very promising for that, esp. paired with:
https://wiki.freepascal.org/pas2js
which I now see is supported in Lazarus.
If someone has an example graphical project which compiles to an HTML page w/ JavaScript using the above, I'd love to see it and a detailed set of build instructions and notes on installing the needed toolchain and deployment. (as a note, I'm currently working in flet.dev using Python which allowed me to get a small prototype up-and-running, but I'm still looking into self-hosting and doing something more complex)
- actually ported (_not_ emulated) w/ native drivers
- easy to install
- performant
- had an attractive GUI
- had a web browser which could handle the basics of the modern web
I mean, the documentation is sixteen pages --- seems like a perfect fit --- still waiting on a tablet shell for an rPi 5 (and still need to get an rPi 5 Compute Module for it), so will be looking into it then....
[1] https://news.ycombinator.com/item?id=19652938
[2] https://www.embarcadero.com/case-study/image-line-software-c...
According to google:
When you assign one dynamic string to another, Free Pascal does not duplicate the actual characters in memory. Instead, both variables point to the same character buffer in the heap, and the runtime increments an internal reference counter. A physical memory copy is only triggered when one of the string instances is modified (written to)
Free Pascal strings are as close as you get to magic, compared to C/C++.
String -> immutable string
StringBuilder -> mutable string, optimized methods for string modification > Free Pascal strings are as close as you get to magic, compared to C/C++.
Not your point of reference, but Java and C# treat strings as immutable objects too.Actually all dynamic array are.
Pre definition of variables. I would like to be able to define variables on first assignment and scoped to the begin/end in which that happens, I don't think there is a good remaining argument to keep them above the statements.
The namespace is cluttered with legacy usage, making the many years of advancement require odd. Combinations of prefixes.
I still think there is a scope for a light fork that changes the name to distinguish it and starts the RTL afresh using the decades of hindsight and improvements.
Good news! Object Pascal has inline variable declaration with type inference:
https://docwiki.embarcadero.com/RADStudio/Florence/en/Delphi...
https://blogs.embarcadero.com/introducing-inline-variables-i...
Type inference is my preference but I thought that would have been a step too far for some.
Most criticized things regarding Pascal e.g. https://www.cs.virginia.edu/~evans/cs655/readings/bwk-on-pas... were already fixed by extension or coukd be fixed easily.
Its slight verbosity - somewhere between C and COBOL - arguably was a pro rather than a con.
Today, Ada and Julia seem to be the langages alive that resemble Pascal the most.
Also most of those extensions ended up in ISO Extended Pascal revision, also usually ignored in such criticism.
It would get to the point of ridiculousness, where people who have never used or barely know of any Wirthian languages, had formed rigid and even nonsensical opinions based on invalid or very questionable information and sources.
However even Ada Core's IDE is a bit of lackluster when comparing with 1990's Delphi, let alone today.
Otherwise it would still be a big contender.
Everything that Zig offers over C as selling point was already there in Object Pascal.
But it _did_ have range checks for array access.
What's an example of the pain?
https://docwiki.embarcadero.com/RADStudio/Florence/en/Pointe...
Object Pascal's pointer syntax is detailed in the links I gave you.
Trivial C interop - yes. Both pascal and cdecl style calling conventions.
Toolchain? Back then - yes. Today? Probably not; depends what you mean by it. It had perfect COM interop which mattered back then, and you could trivially link stuff if you wanted to. And people did.
Ironically it is still easier in Delphi than the frameworks Microsoft keeps pouring out for .NET and C++.
I keep joking they should afford some Embarcadero licenses to learn how to actually do it.
> most developers never bothered learning the "go to next error" hotkey and just spammed F9 (compile & run) whenever they fixed a syntax error
We didn't know we were privileged. I thought it was normal thing to have.
Also Wirth had nothing to do with Modula-3, that was all DEC / Olivetti SRC work, done by ex-Xerox people with experience on Cedar and Modula-2+.
source: https://go.dev/doc/faq
Without Pascal there would be no Modula.
I do agree with Modula, which isn't the same as Modula-3.
No comptime, but everything else, sure, Turbo Pascal (and then Delphi) had.
Maybe it'll blow your mind (not sure if you find this impressive or not), but Turbo Pascal had sub-second compilation per module on large modules back on my 486 with 4MB of RAM.
Sure, Zig has more features than Pascal, but not the ones you listed (except, of course, for comptime).
And still does. You can get the latest version of Delphi (including a free version for non-commercial use) here: https://www.embarcadero.com/products/delphi
It rocks.
You're also not limited to Delphi. You can use Oxygene https://www.remobjects.com/elements/oxygene/language
If you're not in the mood to rent your compiler, you can also try Lazarus.
Also, for non-commercial use, Delphi is free.
Object Pascal compilers were already super fast in MS-DOS hardware!
IIRC Apple went and made Objective-C(/C++) and then eventually Swift. Not sure if they actually embraced C++ all that much - did they really?
I am talking about Apple after Jobs was kicked out.
You missed the part where NeXT licensed Objective-C from Stepstone, Apple bought NeXT as last survival action before bankruptcy, and OS X sprung out of NeXTSTEP.
Personally, in that family of languages I prefer Ada, but I gave up with programming and programming languages.
People hate verbose syntax until it's about a language they like. Then suddenly "the IDE takes care of that so I don't care" or some such. With Ada in particular, if you gave up safer programming for 40 years because "ew nasty I have to type begin...end..." then I don't want to hear about your pet safe language.
The SPARK subset of Ada comes pretty close to enforcing purity of Ada functions, although it still permits them to read globals. [0]
It's not just an oversight. The core of the Ada language was designed deliberately. [1]
[0] https://learn.adacore.com/courses/intro-to-spark/chapters/01...
[1] https://en.wikipedia.org/wiki/Ada_(programming_language)#His...
Still, I don't feel many people want to use Object Pascal these days. If you have the choice between Python and Object Pascal, most people will undoubtedly use Python. It's just how it is right now, and I also don't see how that can change in favour of Object Pascal. Programming languages nowadays have so much more competition, and people are less tolerant of flaws. Strangely enough, people barely seem to work on these flaws; this is one of my pet peeve with ruby, the documentation should be much better but it is not. I no longer find that acceptable in 2026, with AI spam slop lowering the quality and google search being terrible and almost totally useless nowadays. You'd assume that a counter-move to this slop-degradation would be to massively improve documentation, but you still find core projects in ruby or at the least important add-ons, to have low-quality documentation. And barely anybody wants to improve on that either.
1) The code isn't as "optimized" as it could be.
2) The talent pool is limited --- chicken or egg issue.
It has been this way for a very long time so I don't see it changing.
Also Embarcadero has also adopted LLVM, while still having fast build times.
https://github.com/rochus-keller/Are-we-fast-yet/blob/main/F...
Bigger problem is that they teach the fundamentals with the abandonware that is turbo pascal instead of using something like the modern Free Pascal Compiler. Which means knowledge of what is possible outside curricula is limited.
Last year I almost was tasked with porting some Pascal codebase to a modern language. Problem was the project had a bus factor of 1, legacy overengineered and would only compile on windows with some proprietary compiler.
Maybe that company would use Claude/Codex or something like that, today, to port the project.
FreePascal can compile TP programs with no changes except for the MS-DOS graphics. A student can swap FP for TP and the code will keep running. But yes, I would switch to FP from the start if I were in charge.
I have not used Pascal since then but it was not the most terrible programming language of all times either. These days I would not know why I'd want to use it, compared to IMO better languages. Nonetheless I found it ok for teaching in school back then.
> The class instances have to be manually freed, otherwise you get memory leaks.
manual memory management in 2026?
Depends on compiler & runtime. If you pick Oxygene, for example, you get GC etc. https://www.remobjects.com/elements/oxygene/language
So play with it I did. I hadn't used Visual Basic at the time, so the entire idea of "drag and drop" GUIs was kind of amazing, and I even kind of ended up liking the language.
I wasn't able to get any kind of OpenGL stuff working with it, so I ended up going back to C and I really haven't touched the language since, but I kind of feel like I should at some point just to finish off that loose thread in my education.
[1] I actually don't remember if that was proper freeware or if I had gotten it cough unofficially free...