from the if-some-is-good,-and-more-is-better,-than-too-many-languages-is-not-enough dept.
Google will contribute changes to Apple's Swift programming language, and will support the language in the Fuchsia OS, a presumed replacement for Android, ChromeOS, etc. that is designed to work on all devices:
Fuchsia is Google's not-at-all-but-kind-of-secret operating system that's being developed in the open, but with almost zero official messaging about what it's for, or what it's built to replace. (Android? Chrome OS? Both? Neither?) The operating system's core is written in mostly C and C++, with Dart for the default "Flutter" UI, but other languages like Go, Rust, Python, and now Swift have also found a home in the project.
Of course, just because you'll be able to compile Swift to run on Fuchsia doesn't mean you'll be able to instantly port any iOS app to Google's new OS when or if it ships. While Apple has open sourced the Swift language itself, much of the iOS platform (like the UI stuff, for instance) is closed source, so code that relies on those closed Apple libraries won't be portable.
One possible future in a world where Fuchsia is an important and relevant platform for apps is that you write the "core logic" of your app in your language of choice — Swift, Go, Rust, JavaScript, etc. — and then you build a custom UI for each platform — Android, iOS, Fuchsia, Linux, Windows, the web — using the appropriate tools for each.
Also at Android Police.
Previously: Google's New Non-Linux OS: Fuchsia
Google's Not-So-Secret New OS
Google Fuchsia UI Previewed
Related Stories
Google is designing a new operating system (also at Github) based on its own new kernel (Magenta), which may be intended to unify/replace Android and ChromeOS. It is also expected to run on a wide range of ARM and x64 devices, such as Chromecast, Raspberry Pi 3, smartphones, laptops, and desktops.
TechSpecs Blog ponders:
I decided to dig through open source to examine the state of Google's upcoming Andromeda OS. For anyone unfamiliar, Andromeda seems to be the replacement for both Android and Chrome OS (cue endless debates over the semantics of that, and what it all entails). Fuchsia is the actual name of the operating system, while Magenta is the name of the kernel, or more correctly, the microkernel. Many of the architectural design decisions appear to have unsurprisingly been focused on creating a highly scalable platform.
It goes without saying that Google isn't trying to hide Fuchsia. People have clearly discovered that Google is replacing Android's Linux kernel. Still, I thought it would be interesting for people to get a better sense of what the OS actually is. This article is only intended to be an overview of the basics, as far as I can comment reasonably competently. (I certainly never took an operating systems class!)
To my naive eyes, rather than saying Chrome OS is being merged into Android, it looks more like Android and Chrome OS are both being merged into Fuchsia. It's worth noting that these operating systems had previously already begun to merge together to an extent, such as when the Android team worked with the Chrome OS team in order to bring Update Engine to Nougat, which introduced A/B updates to the platform.
Google is unsurprisingly bringing up Andromeda on a number of platforms, including the humble Intel NUC. ARM, x86, and MIPS bring-up is exactly what you would expect for an Android successor, and it also seems clear that this platform will run on Intel laptops.
Google's Fuchsia System UI can now be previewed. The operating system could potentially replace Android and even ChromeOS:
Google, never one to compete in a market with a single product, is apparently hard at work on a third operating system after Android and Chrome OS. This one is an open source, real-time OS called "Fuchsia." The OS first popped up in August last year, but back then it was just a command line. Now the mysterious project has a crazy new UI we can look at, so let's dive in.
Unlike Android and Chrome OS, Fuchsia is not based on Linux—it uses a new, Google-developed microkernel called "Magenta." With Fuchsia, Google would not only be dumping the Linux kernel, but also the GPL: the OS is licensed under a mix of BSD 3 clause, MIT, and Apache 2.0. Dumping Linux might come as a bit of a shock, but the Android ecosystem seems to have no desire to keep up with upstream Linux releases. Even the Google Pixel is still stuck on Linux Kernel 3.18, which was first released at the end of 2014.
[...] This all leads us to an interesting point right now: the Fuchsia interface is written with the Flutter SDK, which is cross-platform. This means that, right now, you can grab chunks of Fuchsia and run it on an Android device. Fuchsia first went public in August 2016, and but back then compiling it would get you nothing more than a command line. Thanks to Hotfixit.net for pointing out that the Fuchsia System UI, called "Armadillo" is actually pretty interesting now.
It's possible to download the source and compile Fuchsia's System UI into an Android APK and install it on an Android device. It consists of a wild reimagining of a home screen along with a keyboard, a home button, and (kind of) a window manager. Nothing really "works"—it's all a bunch of placeholder interfaces that don't do anything. There's also a great readme in the Fuchsia source that describes what the heck is going on.
It's about time for Linux Torvalds' domination of the smartphone industry to end.
Also at BGR, ZDNet, ComputerWorld, and The Register. Preview video.
Google's Fuchsia OS will support Linux apps
Google's non-Linux-based Fuchsia OS has added an emulator for running Debian Linux apps. Like its upcoming Linux emulator for Chrome OS, Fuchsia's "Guest" app will offer tighter integration than typical emulators.
Google has added a Guest app to its emergent and currently open source Fuchsia OS to enable Linux apps to run within Fuchsia as a virtual machine (VM). The Guest app makes use of a library called Machina that permits closer integration with the OS than is available with typical emulators, according to a recent 9to5Google story.
Last month, Google announced a Project Crostini technology that will soon let Chromebook users more easily run mainstream Linux applications within a Chrome OS VM. This week, Acer's Chromebook Flip C101 joined the short list of Chromebooks that will offer Linux support later this year.
Previously: Google's New Non-Linux OS: Fuchsia
Google's Not-So-Secret New OS
Google Fuchsia UI Previewed
Google to Add Swift Language Support to Fuchsia OS
ChromeOS Gains the Ability to Run Linux Applications
Google has updated a mobile framework that targets Android, iOS, and the in-development Google Fuchsia OS:
On Wednesday, Google's cross-platform mobile framework Flutter reached Preview Release 1, a designation that places the code somewhere between buggy beta and less buggy 1.0.
"The shift from beta to release preview signals our confidence in the stability and quality of what we have, and our focus on bug fixing and stabilization," said Google group product manager Tim Sneath in a blog post.
Introduced in May 2017, Flutter provides a way for Linux, macOS and Windows developers to create mobile apps in the Dart programming language that can run on Android, iOS or Google Fuchsia, an operating system that Google is working on.
Apps would be bundled with the Flutter engine:
Flutter is Google's second swing at a mobile SDK (the first being a little platform called "Android"). Flutter's claim to fame is that it's cross-platform—Flutter apps run on Android and iOS—and it's really fast. Flutter apps sidestep the app platforms of Android and iOS and instead run on the Flutter rendering engine (written in C++) and Flutter framework (written in Google's Dart language, just like Flutter apps). When it's time to ship a Flutter app off to Google's and Apple's respective app stores, the requisite Flutter engine code gets bundled up with the app code, and the Flutter SDK spits out Android and iOS versions of your single code base. Each version comes complete with built-in app themes for Android or iOS, so they still feel like native apps. Along with Android and iOS, Flutter is also the platform used for apps in Google's experimental Fuchsia OS.
Related: Google's New Non-Linux OS: Fuchsia
Google's Not-So-Secret New OS
Google Fuchsia UI Previewed
Google to Add Swift Language Support to Fuchsia OS
Google has hired 14-year Apple engineer Bill Stevenson to help bring the Fuchsia OS to market.
We learned in 2016 that Google was working on an entirely new operating system called Fuchsia. Development continues with new features and testing on a variety of form factors spotted regularly. Google has since hired 14-year Apple engineer Bill Stevenson to work on its upcoming OS, and help bring it to market.
[...] Remaining in the OS X organization, he became a Senior Engineering Program Manager four years later. New responsibilities included serving as PM and Technical Lead for AirPlay, Find My Mac, iCloud for Mac, and AirDrop from 10.6 Snow Leopard to 10.9 Mavericks. Most of these features are notably backed by cloud services.
[...] It’s not surprising why Google would want someone with that background and experience to bring up Fuchsia. In a LinkedIn post shared yesterday, Stevenson specifically notes “joining Google to help bring a new operating system called Fuchsia to market.”
Google seems to be all aboard the Fuchsia train.
Previously: Google Hopes to Replace Android with Fuchsia in Five Years
Google's Fuchsia OS Adds Emulator for Debian Linux Applications
Google to Add Swift Language Support to Fuchsia OS
Google is officially releasing its Fuchsia OS, starting w/ first-gen Nest Hub
Google's long-in-development, from-scratch operating system, Fuchsia, is now running on real Made by Google devices, namely, the first-generation Nest Hub.
Google has told us that as of today, an update is beginning to roll out to owners of the first-generation Nest Hub, first released in 2018. For all intents and purposes, this update will not change any of the functionality of the Nest Hub, but under the hood, the smart display will be running Fuchsia OS instead of the Linux-based "Cast OS" it used before. In fact, your experience with the Nest Hub should be essentially identical. This is possible because Google's smart display experience is built with Flutter, which is designed to consistently bring apps to multiple platforms, Fuchsia included.
We've been tracking the development of Fuchsia since 2016, starting from an ambitious experimental UI, to running on Google's many internal testing devices for Fuchsia, ranging the full gamut of Google's smart home and Chromebook lineup. In the time since then, the OS has gradually progressed and recently even begun a steady release schedule.
Also at The Verge and Notebookcheck.
Previously:
(Score: 3, Insightful) by Uncle_Al on Friday December 01 2017, @05:15PM (2 children)
Lock people into proprietary libraries/environments that only work on your hardware.
(Score: 4, Informative) by takyon on Friday December 01 2017, @05:25PM (1 child)
[SIG] 10/28/2017: Soylent Upgrade v14 [soylentnews.org]
(Score: 2, Insightful) by Anonymous Coward on Friday December 01 2017, @07:13PM
There will be tons of proprietary libraries and binary blobs just like there are today!
Look, software is basically a solved problem for FOSS. The real beast is hardware; we need FOSH.
(Score: 2) by DannyB on Friday December 01 2017, @06:34PM (10 children)
Does Swift offer any particular advantage over other modern languages? Such as Dart, Go, Rust, JavaScript, or lisps?
To transfer files: right-click on file, pick Copy. Unplug mouse, plug mouse into other computer. Right-click, paste.
(Score: 2) by RamiK on Friday December 01 2017, @09:26PM (9 children)
Define "modern language".
Also, no.
compiling...
(Score: 3, Funny) by DannyB on Friday December 01 2017, @10:02PM (7 children)
Modern, I think of:
* feels dynamic, but is compiled to executable
* has strong typing, but infers types rather than being "duck" typing
* has GC
* I realize I also conflate "modern" with "higher level, more abstract, further from bare metal"
Rust is modern, but not what I want to program in.
To transfer files: right-click on file, pick Copy. Unplug mouse, plug mouse into other computer. Right-click, paste.
(Score: 0) by Anonymous Coward on Friday December 01 2017, @10:09PM (5 children)
Wikipedia [wikipedia.org]:
You know what's modern? A language that allows you to choose what kind of memory management your software will use, including garbage collection; a modern language is one that is built around the notion of "zero-cost abstraction". That language is C++.
(Score: 2) by RamiK on Saturday December 02 2017, @02:55AM (2 children)
C++ abstractions might not cost you run-time directly (compared to C), but they take longer to develop, optimize and debug which ends up costing you run-time indirectly. Now, if you're a big corporation that can pour money the problem endlessly, you might be able to hire enough smart programmers until you're in the "we're faster then the competition" zone. But the resulting code-base ends-up so hairy that the next feature will take longer to develop and the following will be even harder... Until one day you're stuck like Microsoft with a code-base you can't even afford maintaining.
Btw, personally if I wanted to go low-level with an opt-in GC and modern language facilities and could satisfy my personal flavor-of-the-month, I'd look at one of the concatenative languages. Kitten [kittenlang.org] for instance, while still young, is looking like everything you'd want from a modernized Forth.
compiling...
(Score: 0) by Anonymous Coward on Saturday December 02 2017, @11:08AM (1 child)
"There is an interpreter written in Haskell, and a work-in-progress native code compiler." http://kittenlang.org/faq/ [kittenlang.org]
If there is a more definite way to spell "stillborn", I've yet to see it.
(Score: 2) by RamiK on Saturday December 02 2017, @01:25PM
Looks lively enough to me: https://github.com/evincarofautumn/kitten [github.com]
Don't forget stacks language like Forth don't have a lot of code in the compiler and std-lib. But if you're looking for something more wide-spread then Kitten and more modern than Forth, you can check out Factor: https://github.com/factor/factor [github.com] In fact, there's a whole wiki with a list of languages that fit the bill: https://concatenative.org/wiki/view/Front%20Page [concatenative.org]
compiling...
(Score: 2) by Wootery on Saturday December 02 2017, @12:21PM
Funny how comments as misguided as yours are always submitted as AC...
You seem to be using the word 'modern' to mean 'something I like the sound of'.
Anyway, when it comes to the garbage collection question, modern languages generally pick a side and commit to it, and for good reason: going half-way just confuses things.
C++ uses RAII extensively, to the point that it doesn't make a lot of sense for them to get serious about supporting GC.
D supports mixed-mode, but I couldn't name another language that does.
No, it isn't. C++ supports pointer-arithmetic. It lets you do XOR linked lists, for instance, but means you'd better be careful if you want to use it with garbage collection, or the GC will collect still-live objects.
Almost as disastrously, C++ semantics mean you can't use a garbage collection algorithm that relocates objects, something that all modern GC algorithms do.
(Score: 2) by DannyB on Monday December 04 2017, @02:46PM
I must strongly disagree with that.
I don't mind if the system allows you to select which GC algorithm to use. And if it provides lots of knobs and controls to tune it. (See Java runtime system.)
But GC must be built into the underlying runtime for any king of application programming language. For Systems and Microcontroller programming, stick to C, C++, Rust, etc. Although microcontrollers already are capable or running Java, Python, Node.js and other GC languages / platforms.
Why must GC be in the runtime platform?
This is one of the hidden strengths of Java. There are C and C++ programs and libraries galore. A major problem is that they have so many different memory management disciplines which make them all incompatible. Or make it difficult for a program to introduce another library that requires yet one more different memory management discipline.
In Java, there are libraries galore. An absolute embarrassment of riches. But they are all compatible. I don't care who creates what data structure. And nobody thinks about anyone being "responsible" to dispose of it. When it is no longer referenced, the GC will eat it.
I would also point out that GC has come a long way since the 1970's. A modern JVM can have dozens or even hundreds of Gigabytes (not Megabytes) of memory and only 10 ms GC pauses. Multiple vendors offer various solutions. Even the stock OpenJDK GC is amazing. But see Azul Systems Zing runtime for Java. You can have hundreds of cpu cores and hundreds of gigabytes and only 10 ms max GC pauses.
To transfer files: right-click on file, pick Copy. Unplug mouse, plug mouse into other computer. Right-click, paste.
(Score: 2) by RamiK on Saturday December 02 2017, @12:06AM
Swift counts references and has you release or hold memory to resolve circular references manually as well as handle any locks and the like unlike parallel languages. So, it doesn't really qualify as having a GC. I guess you can also look at these half-manual memory management aspects as features...
Disregarding that, I guess, advantages wise, it has generics and OO that Go doesn't have; It's stable unlike Rust; And, it isn't as bat-shit crazy broken syntactically like Javascript... Oh, and you're forced to use it or obj-c for iOS development and the latter doesn't qualify as a modern language according to your bucket list.
compiling...
(Score: 2) by Gaaark on Friday December 01 2017, @10:19PM
Any language that includes saying "He my babby-daddy"
--- Please remind me if I haven't been civil to you: I'm channeling MDC. ---Gaaark 2.0 ---
(Score: 0) by Anonymous Coward on Friday December 01 2017, @07:47PM
Currently, Fuchsia has a fake UI with a bunch of placeholders.
Why?
Any interesting new operating system isn't going to have work being done at that level yet. So, I doubt it will offer anything novel in terms of OS design, other than what has been
stolenadopted from other people's long existing work; Wikipedia:(Score: 0) by Anonymous Coward on Friday December 01 2017, @10:41PM (1 child)
Sounds like something for hipsters in skinny jeans.
(Score: 0) by Anonymous Coward on Friday December 01 2017, @11:06PM
See subject.