perl v5.40.0 released
Perl 5.40.0 represents approximately 11 months of development since Perl 5.38.0 and contains approximately 160,000 lines of changes across 1,500 files from 75 authors". Significant changes include a new __CLASS__ keyword, a :reader attribute for field variables, a new "^^" logical-XOR operator (because two of those were not enough), moving "try/catch" out of the experimental category, and more; see this page for lots of details.
From: | Graham Knop <haarg-AT-haarg.org> | |
To: | Perl5 Porters <perl5-porters-AT-perl.org> | |
Subject: | perl v5.40.0 is now available | |
Date: | Sun, 09 Jun 2024 22:58:16 +0200 | |
Message-ID: | <CAM=m89HmOkANJ5==o7P=ZgVoPcr5RRbrRA2__W+P0cZiK3hUWw@mail.gmail.com> | |
Cc: | noc-AT-metacpan.org |
“What’s your name,” Coraline asked the cat. “Look, I’m Coraline. Okay?” “Cats don’t have names,” it said. “No?” said Coraline. “No,” said the cat. “Now you people have names. That’s because you don’t know who you are. We know who we are, so we don’t need names.” -- Neil Gaiman, Coraline We are happy to announce version 5.40.0, the first release of version 5.40 of Perl. You will soon be able to download Perl 5.40.0 from your favorite CPAN mirror or find it at: https://metacpan.org/release/HAARG/perl-5.40.0/ SHA256 digests for this release are: c740348f357396327a9795d3e8323bafd0fe8a5c7835fc1cbaba0cc8dfe7161f perl-5.40.0.tar.gz d5325300ad267624cb0b7d512cfdfcd74fa7fe00c455c5b51a6bd53e5e199ef9 perl-5.40.0.tar.xz You can find a full list of changes in the file "perldelta.pod" located in the "pod" directory inside the release and on the web at https://metacpan.org/release/HAARG/perl-5.40.0/view/pod/p... Perl 5.40.0 represents approximately 11 months of development since Perl 5.38.0 and contains approximately 160,000 lines of changes across 1,500 files from 75 authors. Excluding auto-generated files, documentation and release tools, there were approximately 110,000 lines of changes to 1,200 .pm, .t, .c and .h files. Perl continues to flourish into its fourth decade thanks to a vibrant community of users and developers. The following people are known to have contributed the improvements that became Perl 5.40.0: Abe Timmerman, Alexander Kanavin, Amory Meltzer, Aristotle Pagaltzis, Arne Johannessen, Beckett Normington, Bernard Quatermass, Bernd, Bruno Meneguele, Chad Granum, Chris 'BinGOs' Williams, Christoph Lamprecht, Craig A. Berry, Dagfinn Ilmari Mannsåker, Dan Book, Dan Church, Daniel Böhmer, Dan Jacobson, Dan Kogai, David Golden, David Mitchell, E. Choroba, Elvin Aslanov, Erik Huelsmann, Eugen Konkov, Gianni Ceccarelli, Graham Knop, Greg Kennedy, guoguangwu, Hauke D, H.Merijn Brand, Hugo van der Sanden, iabyn, Jake Hamby, Jakub Wilk, James E Keenan, James Raspass, Joe McMahon, Johan Vromans, John Karr, Karen Etheridge, Karl Williamson, Leon Timmermans, Lukas Mai, Marco Fontani, Marek Rouchal, Martijn Lievaart, Mathias Kende, Matthew Horsfall, Max Maischein, Nicolas Mendoza, Nicolas R, OpossumPetya, Paul Evans, Paul Marquess, Peter John Acklam, Philippe Bruhat (BooK), Raul E Rangel, Renee Baecker, Ricardo Signes, Richard Leach, Scott Baker, Sevan Janiyan, Sisyphus, Steve Hay, TAKAI Kousuke, Todd Rinaldo, Tomasz Konojacki, Tom Hughes, Tony Cook, William Lyu, x-yuri, Yves Orton, Zakariyya Mughal, Дилян Палаузов. The list above is almost certainly incomplete as it is automatically generated from version control history. In particular, it does not include the names of the (very much appreciated) contributors who reported issues to the Perl bug tracker. Many of the changes included in this version originated in the CPAN modules included in Perl's core. We're grateful to the entire CPAN community for helping Perl to flourish. For a more complete list of all of Perl's historical contributors, please see the AUTHORS file in the Perl source distribution. We expect to make the first development snapshot of perl v5.41 on June 20th, 2024. The next major stable release of Perl should appear in the first half of 2025.
Posted Jun 10, 2024 16:08 UTC (Mon)
by rweikusat2 (subscriber, #117920)
[Link] (18 responses)
Posted Jun 10, 2024 16:38 UTC (Mon)
by proski (subscriber, #104)
[Link]
Posted Jun 10, 2024 16:53 UTC (Mon)
by jccleaver (guest, #127418)
[Link] (7 responses)
Posted Jun 10, 2024 17:19 UTC (Mon)
by pbonzini (subscriber, #60935)
[Link] (6 responses)
Posted Jun 10, 2024 18:20 UTC (Mon)
by smurf (subscriber, #17840)
[Link] (3 responses)
On the other hand, I haven't programmed anything Perl-ish for the last 15 years, so what do I know?
Posted Jun 10, 2024 19:33 UTC (Mon)
by mathstuf (subscriber, #69389)
[Link]
Posted Jun 10, 2024 20:21 UTC (Mon)
by rweikusat2 (subscriber, #117920)
[Link] (1 responses)
0 != "a"
is false but
!0 != !"a"
is true.
Posted Jun 11, 2024 19:22 UTC (Tue)
by jwilk (subscriber, #63328)
[Link]
Since v5.36, it kinda has:
https://perldoc.perl.org/perl5360delta#Stable-boolean-tra...
Posted Jun 10, 2024 18:25 UTC (Mon)
by rweikusat2 (subscriber, #117920)
[Link]
perl -e '$a = 0; $b = 'abc'; print(($a || $b) && !($a && $b) && ($a == $b), "\n")'
:-)
Posted Jun 11, 2024 22:58 UTC (Tue)
by MarcB (subscriber, #101804)
[Link]
That is all this change is about. Now all logical operator exist in three versions: bit-wise, high-precedence logical and low-precedence logical.
See https://perldoc.perl.org/perlop#Operator-Precedence-and-A...
Posted Jun 10, 2024 17:04 UTC (Mon)
by mb (subscriber, #50428)
[Link]
Well, that's easy.
¯\_(ツ)_/¯
Posted Jun 10, 2024 19:22 UTC (Mon)
by sub2LWN (subscriber, #134200)
[Link] (7 responses)
Posted Jun 10, 2024 21:18 UTC (Mon)
by dskoll (subscriber, #1630)
[Link] (6 responses)
Oof, C does not have a logical XOR, so calling it "C-style" is a bit of a stretch. I can't recall ever needing a logical XOR, but if I did, I would be perfectly fine with writing I suppose if A and B had side-effects, that might be a problem, but just Don't Do That.
Posted Jun 11, 2024 4:20 UTC (Tue)
by willy (subscriber, #9762)
[Link] (5 responses)
Posted Jun 11, 2024 16:37 UTC (Tue)
by dskoll (subscriber, #1630)
[Link] (4 responses)
Yup, xor is not often used in general-purpose software, though it is used in quite a few encryption and hashing algorithms. But that's bitwise-xor. I'm scratching my head trying to come up with a scenario where logical-xor is needed. I agree that reserving ^ for exponentiation would have been better than reserving it for xor, but that's water under the bridge.
Posted Jun 11, 2024 17:52 UTC (Tue)
by NYKevin (subscriber, #129325)
[Link]
Posted Jun 11, 2024 23:04 UTC (Tue)
by MarcB (subscriber, #101804)
[Link]
Posted Jun 14, 2024 15:57 UTC (Fri)
by magnus (subscriber, #34778)
[Link] (1 responses)
Posted Jun 14, 2024 16:48 UTC (Fri)
by atnot (subscriber, #124910)
[Link]
Posted Jun 10, 2024 21:50 UTC (Mon)
by b7j0c (guest, #27559)
[Link]
Posted Jun 12, 2024 12:23 UTC (Wed)
by bs338 (subscriber, #47218)
[Link] (3 responses)
I know summarising the significant changes is generally interesting, but my takeaway from the release is that perl is able to hold down a steady release cadence with a core cadre of committers. This means that anyone using perl today can be rely on it continuing to be available!
Picking something old at random, I see Expect hasn't had a release since 2018. So anyone using it on an up-to-date Linux distro is now relying on that distro to keep it working without a very active upstream.
Posted Jun 12, 2024 16:21 UTC (Wed)
by mathstuf (subscriber, #69389)
[Link] (1 responses)
But has anybody *wanted* changes to Expect (I'm assuming it's related the Tcl tool here)? Are there pending developments that have been merged waiting on a release? If there's nothing to update except the `use` statement…isn't not having to change that exactly what the statement is *for*?
Posted Jun 12, 2024 17:38 UTC (Wed)
by malmedal (subscriber, #56172)
[Link]
Also my oldest graphical program in frequent use is written is Tcl/Tk.
Having things just work is very valuable.
Posted Jun 13, 2024 17:40 UTC (Thu)
by flussence (guest, #85566)
[Link]
And the thing is, that's where the surprises end. If I fire up some of my old code from 2014 or whenever it was, it'll probably just work here. I cannot say that about nearly any other language in the mainstream; I've been dealing with constant fallout from GCC and Python all month and those aren't even things I *write*, just use.
Logical XOR
Logical XOR
Logical XOR
Logical XOR
Logical XOR
Logical XOR
Logical XOR
Logical XOR
Logical XOR
Logical XOR
Logical XOR
If you think coding is fun, use ^^
C-Style Logical XOR
C-Style Logical XOR
(A && !B) || (B && !A)
. And yes, I know the parens are not strictly necessary, but I like them.
C-Style Logical XOR
C-Style Logical XOR
C-Style Logical XOR
C-Style Logical XOR
C-Style Logical XOR
C-Style Logical XOR
yay!
Steady maintenance
Steady maintenance
Steady maintenance
Steady maintenance