compatibility - What are some specific examples of backward incompatibilities in Perl versions? -


It has been 22 years between the initial public release of Pearl 1.0 (December 18, 1987) and the current stable release 5.10 . 1 (2009).

The following notable releases have been made during those 22 years:

  • Pearl 1.0 (1987 - Initial Release)
  • Pearl 2 (1989) - Better Regular Expressions)
  • Pearl 3 (1989 - Support for Binary Data Streams)
  • Pearl 4 (1991 - Identification of Pearl version as described in Camel Book
  • Pearl 5.6 (2000 - 64 bit support, Unicode string, large file support)
  • Pearl 5 (1994 - Major changes, complete rewrite of the presenter Pearl 5.8 (2002 - Improved Unicode support, new Io implementation)
  • Pearl 5.10 (2007 - New switch statement, regular expression update, Smart Match operator)

I am looking for specific examples of back discomfort during Pearl's history

Question:

  • 22 years of Pearl In the history of, is there an example of an incompatibility behind Pearl, where Pearl is not a Pearl source code targeting the version X Please go to version Y (where Y> X)

Please include examples of reference and code when possible.

One of the most deliberately anomaly is the array interpolation that has changed between Pearl 4 and Pearl 5 .

  my @example = qw (1 2 3); Print "foo@example.com";  

This will be in Pearl 4:

  foo@example.com  

which will be in Pearl 5: < Fortunately, if the array is not present, then Pearl will warn you about "potentially unexpected interpolation."

Threads made a big difference between 5.005 and 5.6. "5005 threads" used traditional pOSIX threading models, where all the global data are shared. Although it was quick in theory, because Pearl could only use the posics thread, it was a nightmare for Pearl Coders. Most Pearl modules were not thread-safe and it really never worked well. In 5.6, ActiveState and others made a fork on Windows when you copy the fork (), Pearl interpreter object on Windows, and run the Opcodes of both interpreters, to "magnify" them. Was known in the form.

In 5.8, Arthur Bergman attended with him and used to make it ithreads. Because multiplication is simulating a different process, so no data is shared by default. Only data shared by you is more secure than using them, although it took a lot of time before ithreads became stable. People like Elizabeth Matjustes and Jerry Haden did this.

5005 threads were finally terminated in 5.10.0. A compatibility layer exists, but I doubt it will actually work in the output code.

Unicode was between 5.6 and 5.8 between another major discrepancy. 5.6 Unicode was a string instrument of Unicode based on the surrounding scope. It was completely engineered again in 5.8, so now the string is linked to the Unicodezai string. Using the Unicode 5.6, the written code usually needs to be rewritten in 5.8, often due to the Unicode 5.6 functioning properly, you had to do an ugly hacks.

Recently, 5.10.1 made a bunch of incompatible smart-match changes were fortunately introduced in 5.10.0, so this was not a big deal. Pearl 6 has introduced a smart-matching concept in the story, and it was backported in a development version of Pearl 5. The time has passed, and the idea of ​​smart-mailing of Pearl 6 has changed. None of the Pearl told 5 people and it was unchanged at 5.10.0. The new Pearl 6 version was seen as much better and therefore was fixed 5.10.1.


Comments

Popular posts from this blog

c# - How to capture HTTP packet with SharpPcap -

php - Multiple Select with Explode: only returns the word "Array" -

php - jQuery AJAX Post not working -