Agree on the industry dynamics observation--I remember too--but want to raise another point of view on 100% backwards compatibility: when Go was just a baby, in pre-1.0 days, there was exploration and new ideas. There was also "Go Fix" to rewrite "go of the past" as "go of today." This seemed genius to me in a systemic way; it meant that even bold changes could be easy and 100% reliable to change. It worked.
I'd like to see this mindset extended in two ways: to rewrite Go to new idioms and to rewrite Go 1 to Go 2. On the idioms front, if the standard library now appreciates read-from over write-to, then let's autoidiomatize it. If new Go 2 error checking is introduced, let's design the rewrite system and the feature in concert. I like this mindset and wonder if it could be sufficient to allow introduction of breaking changes. This is my question here--would rewrite fool assurances be enough to feel compatible in the way sought by the OP? Michael On Wed, Oct 24, 2018 at 9:40 AM robert engels <reng...@ix.netcom.com> wrote: > Also, I wouldn’t discount the ‘binary runs with the latest JVM’ doesn’t > apply to Go. > > As I pointed out in an earlier email, I think the future of Go is that the > shipped binary will be runtime linked against the standard library and > runtime. This is by far the easier way to deliver security patches. You > will probably pay a performance hit due to lack of inlining, but for a > large class of applications this would be a easy trade-off to make to > simplify security handling. > > > On Oct 24, 2018, at 11:26 AM, Burak Serdar <bser...@ieee.org> wrote: > > > > On Wed, Oct 24, 2018 at 10:21 AM robert engels <reng...@ix.netcom.com> > wrote: > >> > >> I think enum was a reserved word from the beginning - like goto - if > not it was VERY early on when it was added. Still, the code would of run on > the latest JVM, it might not of compiled. Outside of that possible case, I > can’t think of another keyword that has been added - maybe the recent > addition of ‘var’ - but don’t get me started on what it happening with Java > now - I think there are very different forces at work than the founding > principles. > > > > You might be right on the history of "enum", but the point is that any > > time you add a keyword, something breaks. > > > > The point that old code can run on new JVM is inapplicable in my > > opinion when comparing Java and Go. > > > > Also, it may not always be a good thing to preserve backward > > compatibility. Opinions differ on this, but I think generics in Java > > is a convoluted piece of mess. > > > >> > >> On Oct 24, 2018, at 11:12 AM, Burak Serdar <bser...@ieee.org> wrote: > >> > >> On Wed, Oct 24, 2018 at 9:59 AM robert engels <reng...@ix.netcom.com> > wrote: > >> > >> > >> To this day, you can take a “binary” written for Java 1.0 and it will > run under the latest JRE. You can compile Java 1.0 source code with the > latest compiler. This is an amazing accomplishment that can’t be > understated. > >> > >> > >> That is not exactly true, is it? Any time a new keyword is added to > >> the language something breaks. They added "enum" at some point, and > >> all programs using enum as an identifier stopped compiling. > >> > >> > >> Over the years, with the benefit of hindsight, many of the Java APIs > were deemed insufficient, or better designs emerged, and they were > deprecated, with the warning, "may be removed in a future release”. > >> > >> To my knowledge a deprecated API in the stdlib has never been removed. > The “deprecation” label is more of a “hey, there are better ways of doing > this, and you should use them…”. > >> > >> I think Go would be best served by ensuring that any future release is > 100% backwards compatible with previous releases. This is the number one > aspect of Java (IMO) that lead to its success - it drastically reduced the > churn/expense of delivering software. Businesses like this…. Developers > like this... > >> > >> In the end, if Go can deliver on the cross platform (some of the OS > specific APIs were a bad choice in some ways IMO, although it is not a deal > breaker), and the 100% backwards compatibility, I don’t see any reason why > Go couldn’t become as ubiquitous as Java. > >> > >> I believe in the end there will two languages left standing. Java for > enterprise apps, and Go for system tools, services, and even OS building. > It is nearly 2020 - manual memory management is done, dynamic languages are > done... > >> > >> Even in the browser, I think Google has figured out what Java folks > knew 20 years ago, JS is a mess, and having a VM in the browser is the way > to go. WebAssembly is the poor mans Java applet. We’re coming full circle… > >> > >> So to sum up, 100% backwards compatibility is a key to Go’s dominance > moving forward, again IMO ) > >> > >> > >> > >> > >> -- > >> You received this message because you are subscribed to the Google > Groups "golang-nuts" group. > >> To unsubscribe from this group and stop receiving emails from it, send > an email to golang-nuts+unsubscr...@googlegroups.com. > >> For more options, visit https://groups.google.com/d/optout. > >> > >> > > -- > You received this message because you are subscribed to the Google Groups > "golang-nuts" group. > To unsubscribe from this group and stop receiving emails from it, send an > email to golang-nuts+unsubscr...@googlegroups.com. > For more options, visit https://groups.google.com/d/optout. > -- *Michael T. jonesmichael.jo...@gmail.com <michael.jo...@gmail.com>* -- You received this message because you are subscribed to the Google Groups "golang-nuts" group. To unsubscribe from this group and stop receiving emails from it, send an email to golang-nuts+unsubscr...@googlegroups.com. For more options, visit https://groups.google.com/d/optout.