7 ms·
Lazarus IDE 3.0
- illabria 3y agoCool, but you can't pay me enough to touch Pascal again.
- 0x000042 3y agoAmazing! I love Lazarus and FPC. I don't use it every day but it is excellent to make small standalone tools in.
- m4rc3lv 3y agoI love it because I have good memories on Delphi back in the nineties.
- xyzelement 3y agoI recently used freepascal’s turbo pascal + dos style ide as a retro way to do the advent of code 2023. It was a blast from the past for sure. Is this / Lazarus just a retro thing or do they have practical utility in 2023 also ?
- pjmlp 3y agoDo get a job in 2023 coding in Object Pascal, probably not. To code some FOSS stuff, enjoy a fast compiler toolchain and RAD experience for GUI applications, worth a try.
- _mlbt 3y agoI'd say not even just FOSS, but indie developers can get a lot of value out of Lazarus and Free Pascal. It is by far the easiest way I've found to create a quick cross platform desktop application. When I say quick, I mean quick to develop, quick to compile, and it produces native binaries (using the native toolkit!) that are quick to run and use less memory than the alternatives. The biggest weakness is that it's not great for iOS and Android.
- badsectoracula 3y agoTechnically the only reason FPC's textmode IDE is "retro" is because everyone is using Lazarus instead :-P so it doesn't get much development. It is useful when you want a more lightweight FPC development environment or to develop in a platform without Lazarus support yet (i think Haiku was like that though from a quick search it looks like Lazarus can run on Haiku now with the Qt backend[0]). There are a bunch of programs using Lazarus though, e.g. AFAIK the 64bit version of Total Commander is made using it. Personally i'm making a bunch of stuff using it, like a 3D game engine[1] (well, actually more than one[2][3], but that is retro :-P), various utilities (e.g. some time ago i wrote a utility to repeat a texture on a spline so i can use it to draw patterns on textures[4]) and experiments (e.g. a lightmapping experiment[5] i wrote last year). Though as i like retro stuff, some of my projects are of that nature (e.g. aside from the second engine mentioned above, i wrote a quick and dirty Quake map editor[6] and a dungeon/map editor[7] for a homebrew game i was making for the OG Xbox using the opensource nxdk SDK - the game was made in C though, only the tools are in Free Pascal and Lazarus). EDIT: forgot to mention, in a previous gamedev job i used Lazarus to write a tool for extracting savegame data for an external QA company, a tool that analyzed resource/asset usage for the engine and could point out exactly where it was loaded with full backtrace (i used Lazarus' "SynEdit" control to show the C++ source code for that with syntax highlighting and move to the exact line) and a tool that analyzed memory use and found untraced memory (the engine had its own memory allocator but not all memory went through that, especially from some middleware, so i wrote a tool that hooked VirtualAlloc and traced its callers - a hacky solution but worked :-P). [0] https://i.imgur.com/Rl8ISmQ.png https://i.imgur.com/Rl8ISmQ.png [1] https://www.youtube.com/watch?v=SQ1-r9aE0QA https://www.youtube.com/watch?v=SQ1-r9aE0QA [2] https://www.youtube.com/watch?v=m5IAIhWcco0 https://www.youtube.com/watch?v=m5IAIhWcco0 [3] https://i.imgur.com/3f64T9M.png https://i.imgur.com/3f64T9M.png [4] https://i.imgur.com/hfXWYAe.png https://i.imgur.com/hfXWYAe.png [5] https://i.imgur.com/ahO15LO.png https://i.imgur.com/ahO15LO.png [6] https://i.imgur.com/7MSH98p.png https://i.imgur.com/7MSH98p.png [7] https://www.youtube.com/watch?v=u1Mf8ujCu5g https://www.youtube.com/watch?v=u1Mf8ujCu5g
- anta40 3y agoLazarus isn't retro. It's an open source, Delphi-compatible IDE. If you are a big Delphi fan and would like to port your apps to non-Windows OSes, try Lazarus.
- squarefoot 3y ago> Lazarus just a retro thing or do they have practical utility in 2023 also ? Surely it's not a retro thing. As for being useful in 2023 for landing a job, well, most head hunters won't even know what you mean if you mention it in your resume, however if you're lucky enough to find a place where they don't dictate what you're forced to use but rather ask "we have a problem, can you solve it? You have carte blanche wrt tools", chances are that by using Lazarus you can be extremely productive in short time.
- Pet_Ant 3y agoGlad to see that RISC-V is supported as a target: https://wiki.freepascal.org/Platform_list#Supported_targets_for_RISC-V https://wiki.freepascal.org/Platform_list#Supported_targets_...
- snvzz 3y agoRISC-V is inevitable.
- Laksen 3y agoThe code generation has been pretty good upstream for many years now. It's easy enough The hardest part of adding full support for RISC-V is to support the hardware floating point ABI. It's incredibly complicated for likely no real world reason. It will likely require a ton of code still to make freepascal fully compliant The software and ABI ecosystem of RISC-V is what made me personally lose my love for it. The ISA is great
- camel-cdr 3y ago> It's incredibly complicated for likely no real world reason Can you explain or link to somewhere to read about this? Isn't psABI quite simple?
- Laksen 3y agoSure. It's the section here https://github.com/riscv-non-isa/riscv-elf-psabi-doc/blob/master/riscv-cc.adoc#hardware-floating-point-calling-convention https://github.com/riscv-non-isa/riscv-elf-psabi-doc/blob/ma... It's that structs of two simple fields need to be passed in registers. And more specifically that this rule is relevant for mixed integer and floating point fields. It's a very specific rule that requires a ton of code to implement compared to the integer calling convention. And again like the weird AMD64 convention likely invented to squeeze out a theoretical few cycles that never occur outside microbenchmarks
- marcodiego 3y agoLazarus license make it so much better than Delphi that I can't find a reason to justify using codegear's solution nowadays other than legacy code. It is not that their alternative isn't good, on the contrary. The problem is that they simply can't win against the competition: they can't win over MS tools for windows, they can't win over Apple's tools on MacOS, they can't win against FLOSS tools for Linux. For everything else where Delphi may look like a good option... Well, for that there is Lazarus.
- badsectoracula 3y agoIMO there are two main reasons nowadays to check codegear's IDEs: you either have some huge Delphi codebase that you can't move anywhere else or you want C++ support with a full RAD IDE (i do not think there is anything as RAD-y as C++ Builder). QtCreator is a workable alternative though. Well, there is a third reason, you want to have some company to blame (and ask help from) when things break :-P
- sakesun 3y agoI think codegears is not their company name for several years now.
- badsectoracula 3y agoYeah, nowadays it is owned by Idera, though AFAIK Embarcadero bought the entire CodeGear division from Borland and then Idera bought Embarcadero.
- 7thaccount 3y agoEmbarcadero right?
- akkartik 3y agoRAD, now there's a term I haven't heard in 10 years. Can you unpack how one modern compiled language can be more RAD than another? I thought it just meant having an IDE.
- satvikpendem 3y agoI keep hearing about Pascal and Delphi, especially on HN, what is it and why is it special or talked about so much? I understand it's an older programming language but not why it's so loved. Any recommendations on how to learn it and is Lazarus a good option for the IDE or does VSCode suffice?
- kristopolous 3y agoIt's not hard to learn. It was often taught as a "first language" the place that I guess Python occupies today. Essentially a more sophisticated BASIC
- smallnix 3y agoYes, it was the programming language I was taught in school. So there is some nostalgia at play, for me at least.
- cstross 3y agoEssentially a more sophisticated BASIC Absolutely wrong. PASCAL was invented by Professor Niklaus Wirth at ETH Zurich specifically for teaching structured programming, circa 1970 (year of first release). It's a descendant of ALGOL (1960), which was pretty much the first structured programming language and introduced functions that could be recursively invoked -- ALGOL is the ancestor of C and PL/I as well as Pascal and relatives (Modula-2, Oberon, etc) and is hugely important. BASIC came out of Dartmouth College in the US in the mid-sixties and the emphasis was on interactive invocation: early BASIC was almost completely non-structured (GOTO for flow of control, minimal subroutines, IF statements with no ELSE). While both Pascal and BASIC were intended as teaching languages, they took radically different views of what to teach. And Python is different again: Python has the virtue of a simple and consistent core syntax, but wasn't designed for teaching -- it was designed for scripting, and was developed in the early 1990s for computers with 2-3 orders of magnitude more resources than early BASIC and Pascal. Object Pascal/Delphi (Delphi was Borland's proprietary implementation with RAD for Windows) is an outgrowth of Borland's Turbo Pascal from the early 1980s, which in turn took Wirth's Pascal and added some essentials that had been missing -- notably dynamically allocated strings, modules, and finally object encapsulation -- that made it much more suitable for writing serious code: for a while Turbo Pascal was a viable competitor for C on MS-DOS. But Pascal is in no way related to BASIC.
- badsectoracula 3y agoThis wont be part of a Lazarus release any time soon (ok, it might be in 4.0 but i don't know when 4.0 will happen) as it is only on trunk, but recently i was fixing bugs for the Gtk1 backend. The neat bit is that Gtk1 is very small and while it isn't preinstalled anywhere nowadays (except Slackware) you can carry the .so as they are around 5-6MB or so. However it also supports static linking and after some quick hacking i made Lazarus to statically link against Gtk1 but dynamically link against X11, etc, thus making binaries that can run in pretty much every distro (assuming of course what Gtk1 provides is enough). The neat bit is that the static binary is only around 1.5MB larger than the equivalent binary linked dynamically with Gtk2. Here is a little mesh viewer test for some docview-like API i wrote recently (not part of Lazarus itself, this is part of a package i use with common code across my Lazarus apps) that was statically compiled with Gtk1 on Slackware running on a Debian which has no Gtk1 libraries at all[0]. Also a bonus screenshot[1] with another mesh viewer (this is a different project[2]) compiled twice, once with the Gtk1 backend and once with the Qt6 backend with the exact same code (just changed the target "widgetset" from the project settings). [0] https://i.imgur.com/Y4jvQMk.png https://i.imgur.com/Y4jvQMk.png [1] https://i.imgur.com/NE2LB3U.png https://i.imgur.com/NE2LB3U.png [2] http://runtimeterror.com/tech/jtf/ http://runtimeterror.com/tech/jtf/
- keyle 3y agoGod I only took a peek at the screenshots and I want that environment so bad. I miss it. I realise what it makes me sound like, sitting on my M2 32GB 1TB monster. Nostalgia hits you in the feels.
- abeyer 3y agoI'd say it's a lot more than _just_ nostalgia, though that certainly can play in too... But there are plenty of aspects of this, like snappy interaction latencies and a small pool of simple but consistent UI components that behave the same every time you see them, that I think are objectively better than much of what we see today. There was absolutely something lost in consistency and quality when we resigned ourselves to most UIs starting with a blank HTML DOM and building their own custom UI from scratch.
- 3y ago
- elwell 3y agoMeta: This old forum design makes me nostalgic.
- nesarkvechnep 3y ago“FreeBSD/Linux”. No wonder people think FreeBSD is a Linux distro.
- type0 3y agoPascal was the first language I tried in my youth, it has forever imprinted my understanding of programming. I'm both immensely thankful and perplexed by it.
- kokizzu5 3y agoi wish for lazarus IDE, but with golang XD
- xyproto 3y agoMe too. But deploying to web unless it's a Steam game, console game, video editor, DAW, audio-editor, 3D-modeller or graphics editor seems to be the way to go. But mostly they would benefit from heavy GPU use and something like OpenGL or Vulkan. An IDE similar to Lazarus, that creates executables for those non-web cases, and has the GPU in mind, and supports Go (+ Rust, Zig, Mojo, Swift, Nim, Crystal, Odin and Hare), would be fun.
- vfclists 3y agoYou are in luck - https://github.com/ying32/govcl https://github.com/ying32/govcl
- candl 3y agoYears ago I was discouraged that there is a lack of a grid component like WPF's Grid or Delphi's TGridPanel. Something that I can specify the number of rows/cols and their sizing. Has this changed since? Or perhaps this is achievable nowadays with (nested?) TFlowPanels?
- badsectoracula 3y agoIf i understand what you mean, i don't think you need TFlowPanel at all and you can just use a regular TPanel (for small grids) or TScrollBox (if you want scrollbars) and modify ChildSizing with Layout set to cclLeftToRightThenTopToBottom and ControlsPerLine to the number of columns you want. You can also set the spacing properties to allow space between the controls and/or the Enlarge/Shrink Horizontal/Vertical properties to force children use the full width/height. I did a quick test[0] and seems to work fine. Note that as this uses the controls' automatic sizing, the controls will always be resized to match their autosize, however you can use the Constrains property to set a minimum (or maximum) size and/or use a TPanel for a "cell" so you can specify whatever size you want (or have cells with multiple controls). [0] https://i.imgur.com/DZBrSvh.png https://i.imgur.com/DZBrSvh.png
- superdisk 3y agoI love Lazarus and FPC. Happy to see this release, I've been using the fixes branch so it's good to see the new stuff rolled out.