News for hackers. Stuff that matters.
Re:Go 1.17 Release Notes by pxue on Monday August 16, 2021 @06:47PM (#28203895)
The go code I wrote in 2015 looks and works exactly the same way new Go code I'm writing today. Even with all the upgrades.

You have no idea how amazing that feels.

Re:Go 1.17 Release Notes by pjmlp on Tuesday August 17, 2021 @12:42AM (#28206306)
My C and C++ code for Windows 3.1 written in 1995 would compile just fine today on Windows 10.
Re:Go 1.17 Release Notes by ithkuil on Tuesday August 17, 2021 @04:32AM (#28207523)
I heard this a lot but I wonder if it's still really true. I mean, can I literally open the latest visual studio and open an old project, hit build and it will just work?
Re:Go 1.17 Release Notes by pjmlp on Tuesday August 17, 2021 @04:40AM (#28207579)
Naturally it depends on what you are doing, but for regular Win16/Win32 code that uses Windows type macros and no low level tricks pretty much so.

And even if you take Win16 out of the picture, Win32 exists since 1995.

Re:Go 1.17 Release Notes by ithkuil on Tuesday August 17, 2021 @04:54AM (#28207659)
I'm not doubting that the windows API has remained stable. I'd like to try if the tooling (e.g. IDE config format or makefile equivalent) has also received the same amount of attention to backward compat
Re:Go 1.17 Release Notes by pjmlp on Tuesday August 17, 2021 @09:10AM (#28209430)
Again, depends on what you were using.

Borland C++ or Watcom, probably not much help.

Delphi, C++ Builder, Visual C++ for Windows 95/2000 mostly work, naturally you might need to use the IDE wizards to upgrade project files, or fix tooling paths on the makefiles.

Re:Go 1.17 Release Notes by dbremner on Tuesday August 17, 2021 @04:49PM (#28214678)
https://github.com/dbremner/cake is a 16-bit Windows 1.0 application that I ported to Win64; most of the changes weren't required.
Re:Go 1.17 Release Notes by systemvoltage on Tuesday August 17, 2021 @01:00AM (#28206378)
As a person that gets anxiety from JS projects and how fast things move, I love this aspect of C. It puts the soul to ease.
Re:Go 1.17 Release Notes by steren on Tuesday August 17, 2021 @01:13AM (#28206442)
The JS code you wrote 20 years ago still runs today (and much much faster)

The problem is not JS, more the dependencies you decided to take for your project.

Re:Go 1.17 Release Notes by pjmlp on Tuesday August 17, 2021 @02:40AM (#28206870)
Indeed. Going back to my example, stuff written with OWL won't compile today.
Re:Go 1.17 Release Notes by maccard on Tuesday August 17, 2021 @05:57AM (#28208045)
The C++ I wrote in 2013 still looks and works the same as it did 8 years ago, and I can write code in the same way, or opt in to newer features in C++14/17 too. The C++ code that I wrote in 2007 (when I started writing C++) also still works.
Re:Go 1.17 Release Notes by rowanG077 on Monday August 16, 2021 @07:18PM (#28204089)
Isn't that the case for the vast majority of languages though? The python,c,Haskell,js,language x code from 2015 works the same now as it did 5 years ago.
Re:Go 1.17 Release Notes by slownews45 on Monday August 16, 2021 @07:29PM (#28204168)
python 2 -> 3 was not easy (aka a total nightmare).

By 3.6 it was pretty good though and even migrations and dual code bases were easier because they went back and allowed things like u"" for unicode strings to continue to mean unicode strings in python 3 - before that they'd actually blocked unicode in 3 that was working well in 2.x code bases! It was a total in your face move to break the ecosystem even though supporting u"" would have been almost no cost in terms of improving compatibility with existing code. ASCII handling (important for things like web tech stacks header handling etc) also improved thankfully. 3.x made things a lot harder initially (and slower too).

Also a lot of code doesn't look the same over time - the conventions (formatting) are either very poorly defined or change. Go seems to have pretty much one format from fmt

etc

Re:Go 1.17 Release Notes by fny on Tuesday August 17, 2021 @12:28AM (#28206235)
Python was a unique shit show.
Re:Go 1.17 Release Notes by int_19h on Tuesday August 17, 2021 @01:59PM (#28212855)
Python 3 should be considered a different language from Python 2, pretty much.
Re:Go 1.17 Release Notes by slownews45 on Tuesday August 17, 2021 @04:07PM (#28214260)
The level on intentional compatibility breaking was crazy.

The fact that they went out of their way to break python 2 unicode when running on python 3 was just totally nuts. Especially after making such a big deal about unicode!

I've never seen anything like it I don't think? Maybe the new Perl that never really landed?

Re:Go 1.17 Release Notes by raiph on Monday August 23, 2021 @01:58PM (#28279590)
> The fact that they went out of their way to break python 2 unicode when running on python 3 was just totally nuts. Especially after making such a big deal about unicode!

Imo it's infinitely worse than that.

The big deal about Unicode is its nature, as defined in the "Summary Narrative" from 1991[0]. To wit:

> The Unicode character encoding derives its name from three main goals:

* universal (addressing the needs of world languages)

* uniform (fixed-width codes for efficient access), and

* unique (bit sequence has only one interpretation into character codes)

The Unicode folk realized that it would take decades to shift developers worldwide to doing that properly, so they adopted a three stage plan for software (eg the string types of programming languages) to get from where things were, to where they needed to be:

* Stage #1: Character = byte

* Stage #2: Character = code point

* Stage #3: Character = what a user thinks of as a character[1]

Python 1 was a Stage #1 language -- Character = byte -- like most others of its time.

In Python 2 there were tweaks to try move toward Stage #2 -- Character = code point, again, like most other PLs of its time.

In Python 3, they dictated a full switch to Stage #2 --- Character = code point. That was an unnecessarily painful break relative to Python 2. But -- and this is what really matters -- they entirely ignored Stage #3, which is the whole point of Unicode in the final analysis.

[0] https://www.unicode.org/history/summary.html

[1] https://unicode.org/glossary/#grapheme

Re:Go 1.17 Release Notes by erik_seaberg on Tuesday August 17, 2021 @06:12PM (#28215432)
They’re still working on Raku, it just isn’t branded “Perl 6” anymore.
Re:Go 1.17 Release Notes by lizmat on Friday August 20, 2021 @04:01PM (#28250732)
That "new" Perl landed in 2015 as "Perl 6". It has been renamed to The Raku Programming Language in 2019 (https://raku.org #rakulang).
Re:Go 1.17 Release Notes by int_19h on Tuesday August 17, 2021 @04:33PM (#28214524)
Well, there were good reasons to change the way py2 worked with Unicode, and I don't think this could have been made right without severe breakage either way. The only thing that should have happened sooner is support for u"" literals.
Re:Go 1.17 Release Notes by slownews45 on Tuesday August 17, 2021 @06:00PM (#28215357)
I had developed with unicode in mind using u"".

For some reason this was not good enough for the python 3 folks - they actively broke this code which was from folks who had SPECIFICALLy addressed unicode in their apps.

And yes, they could have supported u"" (and a number of other things).

They went - unicode is so critical we will break the world, and then for folks who had already supported unicode well or wanted to dual target a library they said your u"" approach to unicode is so bad we will break it.

Total BS in my book.

Re:Go 1.17 Release Notes by Strum355 on Monday August 16, 2021 @08:47PM (#28204801)
Ive had a number of python libraries (and Im not talking small, lesser known ones) that would depend on (and break in the absence of) specific quirks in Python versions that made upgrading python an unnecessary hassle.
Re:Go 1.17 Release Notes by pxue on Monday August 16, 2021 @07:33PM (#28204201)
For JS, es6/ecma2015 -> ecma2021, lots of language changes.
Re:Go 1.17 Release Notes by rowanG077 on Monday August 16, 2021 @07:43PM (#28204302)
Of course changes but afaik it's backwards compatible.
Re:Go 1.17 Release Notes by ricardobeat on Monday August 16, 2021 @09:41PM (#28205133)
I don't think the OP was making a point about backwards compatibility, but how the language itself has remained stable (sign of good design?). That is not the case for the majority of languages, except for maybe Ruby. Javascript in particular looks nothing like code from 6 years ago.
Re:Go 1.17 Release Notes by systemvoltage on Tuesday August 17, 2021 @01:04AM (#28206402)
Furthermore, you rarely just plain JS. It's always another behemoth framework such as React or Angular.

I challenge anyone to upgrade a project from Angular ver 5 to the latest. It's possible but you'll also question whether its possible for you to quit software engineering and learn woodworking.