Search icon CANCEL
Subscription
0
Cart icon
Your Cart (0 item)
Close icon
You have no products in your basket yet
Arrow left icon
Explore Products
Best Sellers
New Releases
Books
Videos
Audiobooks
Learning Hub
Free Learning
Arrow right icon

Tech News - Programming

573 Articles
article-image-introducing-collapse-os-a-z80-kernel-that-can-be-designed-with-scavenged-parts-and-program-microcontrollers
Vincy Davis
08 Oct 2019
4 min read
Save for later

Introducing Collapse OS, a z80 kernel that can be designed with “scavenged parts and program microcontrollers”

Vincy Davis
08 Oct 2019
4 min read
There is a new operating system in the market which is designed in anticipation of the collapse of the current economic system - Collapse OS. The goal of this project is “to be as self-contained as possible.” With a copy of this project, its developer Virgil Dupras says, a capable person will be able to easily build and install Collapse OS without external resources. It will also be possible to build a machine with an exclusive design, and from discarded parts with low-tech tools. Dupras believes that the global supply chain will collapse before 2030 and post-collapse, it would be difficult to reproduce most of the electronics due to lack of supply chain. This will make it impossible to bootstrap the new electronic technology and thus limit its growth. At this point, Dupras says, Collapse OS can prove to be a good “starter kit”. He affirms that this operating system can be designed from “scavenged parts and program microcontrollers” with sufficient RAM and storage. Basically, Collapse OS is a z80 kernel, with a collection of programs, tools, and documentation to assemble an operating system. It can run on minimal and improvised machines and enables interfacing through improvised means like serial, keyboard, display. The Collapse Operating System can edit text and compile assembler source files for a wide range of microcontrollers and CPUs. It can also read and write from a wide range of storage devices and replicate itself. What is the current status of Collapse OS? Collapse OS is built from a GNU environment with minimal tooling and only requires libz80, which is an emulator of the z80 processor. It also has a shell that can poke memory, I/O, call arbitrary code from memory. It can also read SD cards and has a text editor modeled after UNIX's ed. Two days ago, a 5K binary zasm with a 2400 SLOC and 8K RAM usage was added in the apps, with an aim to assemble kernel or itself. Currently, Collapse OS can run on an RC2014 through a serial link with a directly plugged in PS/2 keyboard. It also runs on a Sega Master System or a MegaDrive (Genesis) with video output and D-Pad input and/or a PS/2 keyboard adapter. The unique concept of Collapse OS has led to an informative discussion on Hacker News. One of the queries included the availability of a rad-hardened version of z80. A user answered, “Given the relative simplicity of a z80 compared to newer CPU designs, it should be relatively "easy" to harden it. There was definitely a rad-hardened version of the 8085 (similar to the 8080, and therefore to the z80), which was used on the Sojourner rover (among various other NASA and ESA spacecraft). Seems like RISC processors were more common for this, though (looks like most relatively-recent NASA spacecraft - including pretty much all of NASA's Mars landers after Sojourner - use(d) rad-hardened POWER CPUs, e.g. the RAD6000 and RAD750).” Many users have found the concept of Collapse OS interesting. https://twitter.com/thepanta82/status/1181395008827645952 https://twitter.com/bradneuberg/status/1181273072759762944 https://twitter.com/EvanWard97/status/1181452898296832000 https://twitter.com/indigocat/status/1181297674408124418 A Redditor says, “This is so insanely cool, definitely the coolest project I have seen in a while. I am dry interested in minimal software (void Linux and suckles fanatic) but this is taking it to a new level. I have a ton of respect for people who work on projects geared towards more advanced users, I know that most of the time it’s a thankless job but please, for the love of god keep it up. We need more devs like this in the world!” Read the Collapse OS roadmap page for more information. You can also check out its Github for more details. Understanding network port numbers, TCP, UDP, and ICMP on an operating system Google’s secret Operating System ‘Fuchsia’ will run Android Applications: 9to5Google Report macOS Catalina is now available for download FCC can’t block states from passing their own net neutrality laws, states a U.S. court The US, UK, and Australian governments call Facebook’s end-to-end encryption plan a hindrance to investigating crimes
Read more
  • 0
  • 0
  • 4824

article-image-macos-catalina-is-now-available-for-download
Sugandha Lahoti
08 Oct 2019
3 min read
Save for later

macOS Catalina is now available for download

Sugandha Lahoti
08 Oct 2019
3 min read
Apple released macOS Catalina today as the next major update to the company’s Mac operating system. With macOS Catalina, iTunes is now broken into separate apps for Apple Music, Podcasts, and Apple TV. Catalina also features Apple Arcade game subscription service and Sidecar, which extends Mac desktops to a second display. For developers, Catalina has Mac Catalyst to build versions of iPad apps compatible with Mac. macOS Catalina was officially revealed in June at the WWDC 2019 and the public beta was released later in June. What’s new in macOS Catalina Sidecar Sidecar basically extends your Mac workspace by using an iPad as a second display-  both wirelessly and when plugged in. Sidecar also supports the Apple Pencil, letting you work on any Mac app or third-party Mac app that supports stylus input. According to an Apple white paper, the only laptops that Sidecar works on are: MacBooks from 2016 or later, MacBook Airs from 2018 or later, and MacBook Pros from 2016 or later. All of them use Apple’s butterfly keyboard. Addition of Apple Arcade Apple Arcade game subscription service is available at $4.99 per month to play games on Mac. Apple Arcade subscribers get the full version of every game including all updates and expansions, without any ads or additional in-game purchases. The service is launching with a 30-day free trial and a single subscription includes access for up to six family members with Family Sharing. iTunes replaced with new entertainment apps iTunes saw it’s long-awaited death and was replaced by three new apps, Apple Music, Apple Podcasts and Apple TV. Music app features over 50 million songs, playlists, and music videos. Apple Podcasts offers more than 700,000 shows in its catalog. Apple TV+, Apple’s video subscription service, will be available in the Apple TV app for Mac starting November 1 Removal of iTunes, however, is a problem for DJs who rely on XML files to sort through file libraries and quickly find tracks while performing. According to Apple, along with Catalina’s removal of iTunes, users are also losing XML file support as all native music playback on Macs moves over to the official Music app, which has a new library format. https://twitter.com/danideahl/status/1181342504949633025 Additional features You also have Screen Time on macOS and stricter privacy protections. Apps will have to ask for permission to access the desktop, documents, iCloud Drive, and external storage. With activation lock, any Macs that have a T2 security chip cannot be erased and reactivated without Apple ID password. ‘Find My App’ combines ‘Find My iPhone’ and ‘Find My Friends’ into a single, easy-to-use app on Mac, iPad, and iPhone. Mail in macOS Catalina adds the ability to block email from a specified sender, mute an overly active thread and unsubscribe from commercial mailing lists. The macOS Catalina update is a free download, and it can be installed by clicking on the Apple icon in the upper left corner of your screen, choosing system preferences, and then selecting software update. Apple bans HKmap.live, a Hong Kong protest safety app from the iOS Store as it makes people ‘evade law enforcement’. Apple iPadOS now available for download with Slide Over and Split View, Home Screen updates, and more. Apple’s September 2019 Event: iPhone 11 Pro and Pro Max, Watch Series 5, Apple TV+ and more
Read more
  • 0
  • 0
  • 3089

article-image-microsoft-announces-new-dual-screen-device-surface-neo-and-windows-10-x-to-be-launched-next-year
Vincy Davis
03 Oct 2019
3 min read
Save for later

Microsoft announces new dual-screen device Surface Neo and Windows 10 X, to be launched next year

Vincy Davis
03 Oct 2019
3 min read
Yesterday, Microsoft made a list of announcements at their annual Surface hardware event in New York. While the event included interesting announcements such as the new surface PRO 7, surface earbuds and more, the main highlights were the new dual-screen Microsoft Surface Neo and Windows 10 X. The dual-screen Surface Neo is expected to go on sale in 2020, before the holiday season. To enable the smooth working of dual devices, Microsoft has exclusively redesigned Windows 10 version to present the Windows 10 X, also known by the codename “Santorini”. In a statement to Verge, Joe Belfiore, head of Windows experiences said, “We see people using laptops. We see people using tablets. We saw an opportunity both at Microsoft and with our partners to fill in some of the gaps in those experiences and offer something new.” At the event, Microsoft said that they are announcing the new hardware and software early to help developers come up with exclusive applications ahead of the launch. It also added that Windows 10 X is not a new operating system, but just a more adaptable format of it. This means that Windows 10 X will only be available on dual-screen devices and not as a standalone copy of Windows 10 X. Read Also: A Microsoft Windows bug deactivates Windows 10 Pro licenses and downgrades to Windows 10 Home, users report The Surface Neo device has two separate 9-inch displays that can fold out to a full 13-inch workspace. It has an intricate hinge which will allow the device to switch into a variety of modes. The device also has a Bluetooth keyboard that flips, slides, and locks into place with magnets that can be stored and secured to the rear of the device. Surface Neo also has a Surface Slim Pen, which gets attached magnetically. Microsoft has maintained that the device is not completely ready and more developments can be expected by the time of its launch. Microsoft may modularize the Windows 10 core technology and use the Start menu to display that in HoloLens. Similarly, Windows 10 X can also put the taskbar or Start menu on either panel as needed. Users will also be able to use the Start menu on either panel, depending on the work they are doing on either of the two panels. Read Also: Microsoft Azure VP demonstrates Holoportation, a reconstructed transmittable 3D technology Windows 10 X could be used in a number of ways like note-taking, mobile presentation, portable all-in-one, laptop, and reading. The engineering lead on Windows 10X, Carmen Zlateff says, “We’re working to take the best of the applications that people need and use most — things like Mail, Calendar, and PowerPoint — and bring them over to dual screens in a way that creates flexible and rich experiences that are unique to this OS and devices.” He further adds, “Our goal is that the vast majority of apps in the Windows Store will work with Windows 10X.” Users are excited about the new Surface Neo and Windows 10 X announcements. https://twitter.com/RoguePlanetoid/status/1179447805036941312 https://twitter.com/BenBajarin/status/1179414618021748737 TensorFlow 2.0 released with tighter Keras integration, eager execution enabled by default, and more! How Chaos Engineering can help predict and prevent cyber-attacks preemptively An unpatched vulnerability in NSA’s Ghidra allows a remote attacker to compromise exposed systems
Read more
  • 0
  • 0
  • 1254
Banner background image

article-image-a-cargo-vulnerability-in-rust-1-25-and-prior-makes-it-ignore-the-package-key-and-download-a-wrong-dependency
Bhagyashree R
01 Oct 2019
3 min read
Save for later

A Cargo vulnerability in Rust 1.25 and prior makes it ignore the package key and download a wrong dependency

Bhagyashree R
01 Oct 2019
3 min read
Yesterday, the Rust team shared that a Cargo vulnerability confuses the older versions of Cargo making them ignore the new package rename feature and download a wrong dependency. This vulnerability, tracked as CVE-2019-16760, affects Rust 1.0 through Rust 1.25. The vulnerability was first reported to the Rust team by Elichai Turkel: https://twitter.com/Elichai2/status/1178681807170101248 Details of Cargo vulnerability Rust 1.31 introduced the package configuration key for renaming dependencies in the ‘Cargo.toml’ manifest file. In Rust 1.25 and prior, Cargo ignores its usage to rename dependencies and may end up downloading a wrong dependency. It affects not only manifests that are written locally, but also those that are published to crates.io. “If you published a crate, for example, that depends on `serde1` to crates.io then users who depend on you may also be vulnerable if they use Rust 1.25.0 and prior. Rust 1.0.0 through Rust 1.25.0 is affected by this advisory because Cargo will ignore the `package` key in manifests,” the team wrote. This vulnerability does not affect Rust 1.26 through Rust 1.30 versions and will throw an error as the package key is unstable in these versions. Rust 1.31 and later are not affected because Cargo understands the package key. Mitigation steps to prevent this Cargo vulnerability The team has already audited the existing crates using the package key published to crates.io and have not detected any exploit of this vulnerability. However, they have recommended users of the affected versions to update their compiler to either 1.26 or later. The team further wrote, “We will not be issuing a patch release for Rust versions prior to 1.26.0. Users of Rust 1.19.0 to Rust 1.25.0 can instead apply the provided patches to mitigate the issue.” This news sparked a discussion on Reddit where developers discussed how this could have been avoided. A user commented, “What do we learn from this? Always throw an error if you encounter an unknown key inside a known configuration object.” Another user suggested, “It would be better to have the config contain a "minimum allowed cargo version", and if you want to use new features you have to bump this version number to at least the version which added the feature. Old versions of cargo can detect the version number and automatically refuse to compile the crate if the minimum version is newer than the cargo version.” Read the official announcement by the Rust team to know more about this vulnerability in detail. Rust 1.38 releases with pipelined compilation for better parallelism while building a multi-crate project Mozilla introduces Neqo, Rust implementation for QUIC, new http protocol Introducing Weld, a runtime written in Rust and LLVM for cross-library optimizations  
Read more
  • 0
  • 0
  • 2946

article-image-rust-1-38-releases-with-pipelined-compilation-for-better-parallelism-while-building-a-multi-crate-project
Bhagyashree R
27 Sep 2019
3 min read
Save for later

Rust 1.38 releases with pipelined compilation for better parallelism while building a multi-crate project

Bhagyashree R
27 Sep 2019
3 min read
After releasing Rust 1.37 last month, the Rust team announced the release of Rust 1.38 yesterday. This version supports pipelined rustc compilation, an extended #[deprecated] attribute for macros, the std::any::type_name function to know the type name, and more. Key updates in Rust 1.38 Pipelined compilation to increase parallelism Rust’s dependency manager and project compiler, Cargo create a directed acyclic graph  (DAG) of crates whenever a cargo build command is fired. Cargo waits till all of the dependencies for that compilation is completed, only then it proceeds to execute rustc.  Starting with 1.38, this wait is minimized by introducing pipelined compilation. Cargo will now take advantage of the metadata produced by the compiler to start the next compilation. Read also: Rust 1.29 is out with improvements to its package manager, Cargo The team shared in the announcement that though this update doesn’t have much effect on builds for a single crate, it has shown up to 10-20% improvement in compilation speed during testing. “Other ones did not improve much, and the speedup depends on the hardware running the build, so your mileage might vary. No code changes are needed to benefit from this,” the team adds. Linting incorrect uses of mem::{uninitialized, zeroed} Previously, the ‘mem::uninitialized’ function allowed developers to sidestep Rust’s initialization checks. This operation can be “incredibly dangerous” as it makes the Rust compiler assume that values are properly initialized. This was addressed in Rust 1.36 by stabilizing the ‘MaybeUninit<T>’ type. The Rust team explained in a previous announcement, “The Rust compiler will understand that it should not assume that a MaybeUninit<T> is a properly initialized T. Therefore, you can do gradual initialization more safely and eventually use .assume_init() once you are certain that maybe_t: MaybeUninit<T> contains an initialized T.” The ‘mem::uninitialized’ function is planned to deprecate in Rust 1.39. Starting with Rust 1.38, the compiler has a few checks to identify incorrect initializations using ‘mem::uninitialized’ or ‘mem::zeroed’. However, these checks do not cover all cases of unsound use of these methods. The #[deprecated] attribute for macros Rust 1.9 introduced the  #[deprecated] attribute that allows crate authors to notify their users an item of their crate is deprecated and will be removed in a future release. In Rust 1.38, this attribute can also be applied to indicate the deprecation of macros. The std::any::type_name function Rust 1.38 introduces a new function called ‘std::any::type_name’ that gives you the type name. Since this is a standard library function for debugging, the exact content and format of the string are not guaranteed. The team explains, “The value returned is only a best-effort description of the type; multiple types may share the same type_name value, and the value may change in future compiler releases.” Some users have already upgraded to Rust 1.38 and shared their feedback on Twitter. https://twitter.com/gilescope/status/1177229413320134661 While others are eagerly waiting for the release that will have the stabilized async-await. https://twitter.com/shirshak55/status/1177247635285000192 These were some of the updates in Rust 1.38. Check out the official announcement for more. Introducing Weld, a runtime written in Rust and LLVM for cross-library optimizations Mozilla introduces Neqo, Rust implementation for QUIC, new http protocol Introducing Nushell: A Rust-based shell Oracle releases JDK 13 with switch expressions and text blocks preview features, and more! Darklang available in private beta
Read more
  • 0
  • 0
  • 2973

article-image-mypy-0-730-releases-with-more-precise-error-locations-display-error-codes
Fatema Patrawala
27 Sep 2019
3 min read
Save for later

Mypy 0.730 releases with more precise error locations, display error codes and more!

Fatema Patrawala
27 Sep 2019
3 min read
Yesterday the Mypy team uploaded mypy 0.730 to the Python Package Index (PyPI). Mypy is a static type checker for Python. This release includes many features, bug fixes and library stub updates. You can install it as follows: python3 -m pip install -U mypy Python creator Guido van Rossum tweeted about this release, he says “mypy 0.720 released. New semantic analyzer is now the default! Also, --warn-unreachable flag, and many more fixes and updates.” Major updates in Mypy 0.730 Some of the breaking changes in the Mypy 0.730 include: More precise error locations If you call a function with an incompatible argument type, mypy now points the error message to the argument with the incompatible type. Previously, mypy pointed to the function being called, which could be confusing in multi-line calls. Error codes Mypy 0.730 can now optionally display error codes. They are shown within square brackets after each error message: prog.py:24: error: "str" has no attribute "trim"  [attr-defined] Enable error codes using --show-error-codes (or show_error_codes = True in a configuration file). Ignoring specific error codes You can ignore only errors with specific error codes on a particular line by using a # type: ignore[code, ...] comment. This reduces the risk of ignoring unexpected, serious errors when using # type: ignore comments that ignore (almost) all possible errors on a line. Colors in output Mypy 0.730 now uses colored, more user-friendly output by default. You can use --no-color to disable colored output. You can use --no-error-summary to hide the summary line with the number of errors. Pretty output mode You can use --pretty to display each line which had errors and a caret that points to the location of the error on each line. Old semantic analyzer removed This release of Mypy 0.730 no longer includes the old semantic analyzer. Reachability and context managers The --warn-unreachable option now behaves more correctly with “exception-swallowing” context managers. If a context manager is currently declared to return bool but it never swallows exceptions, you should annotate the return of __exit__ as Literal[False] instead of bool, or otherwise mypy may complain about missing return statements. To know more about this release, read the full documentation on Read the Docs. Other interesting news in programming Łukasz Langa at PyLondinium19: “If Python stays synonymous with CPython for too long, we’ll be in big trouble” Microsoft introduces Pyright, a static type checker for the Python language written in TypeScript Python 3.8 alpha 2 is now available for testing
Read more
  • 0
  • 0
  • 2283
Unlock access to the largest independent learning library in Tech for FREE!
Get unlimited access to 7500+ expert-authored eBooks and video courses covering every tech area you can think of.
Renews at $19.99/month. Cancel anytime
article-image-gnome-foundations-shotwell-photo-manager-faces-a-patent-infringement-lawsuit-from-rothschild-patent-imaging
Bhagyashree R
26 Sep 2019
4 min read
Save for later

GNOME Foundation’s Shotwell photo manager faces a patent infringement lawsuit from Rothschild Patent Imaging

Bhagyashree R
26 Sep 2019
4 min read
Yesterday, the GNOME Foundation shared that Rothschild Patent Imaging LLC has filed a lawsuit against them stating that their Shotwell photo manager and other similar products infringe its patent. “On information and belief, Defendant sells, offers to sell, and/or uses network storage systems and methods including, without limitation, the Gnome Shotwell platform, and any similar products (“Product”), which infringe at least Claim 4 of the ‘086 Patent,” the lawsuit reads. Shotwell is a digital photo manager for the GNOME desktop environment. It allows you to import photos and videos from a disk or digital camera directly and organize them by keywords and events. It also includes editing features for cropping, rotating, adjusting levels and color balance, straightening, and eliminating red-eye. GNOME has called this lawsuit “baseless” and has decided to fight against this case head-on. In a statement, Neil McGovern, Executive Director for the GNOME Foundation said, “We have retained legal counsel and intend to vigorously defend against this baseless suit. Due to the ongoing litigation, we, unfortunately, cannot make any further comments at this time.” The 9,936,086 patent titled "Wireless image distribution system and method” was filed by Rothschild Patent Imaging LLC at the US Patent and Trademark Office on 2 June 2017 and got accepted on 3 April 2018. It talks about wirelessly connecting an image capturing device with a receiving device and sharing them based on transfer criteria. This patent is very vague and can be applied to literally any software that transfers images from one device to another. Also, there are quite a few similar technologies that GNOME can present as prior art resulting in the invalidation of the lawsuit. There is Shotwell’s predecessor, F-Shot that was discontinued in 2017. In a discussion on LW.NET, a user shared, “Shotwell's predecessor (F-Spot) had equivalent "wireless" functionality at least two years before this patent was first applied for.” The GNOME Foundation is not the first one who has been sued by Rothschild Patent Imaging LLC. It looks like the company has been on a suing spree adding Cyberlink.com,  QNAP Inc., Pinterest, Inc., Piximity, LLC, Magix Computer Products International Co. on their list. Considering its history, many are saying that Rothschild Patent Imaging LLC is nothing but a patent troll. A user on Hacker News commented, “Rothschild Patent Imaging appears to be the company holding the rights to a number of dubious patents filed by Leigh M. Rothschild, who appears to have a well-deserved reputation as a patent troll.” Many users commented that there should be some kind of “reform” to eliminate patent trolling. A user added, “One reform worth considering is that an entity that can be demonstrated to persistently engage in frivolous patent lawsuits should lose the rights to their entire portfolio. This could be accomplished with a legal mechanism that allows the defendant to counter-sue the plaintiff as a patent troll. In this scope, they could bring in the previous litigation history of the plaintiff (or any related entities, piercing the corporate veil). If the judge rules in the defendant's favor, then all of the plaintiff's patents (and any related entities) are immediately released into the public domain.” Another user suggested, “Another potential reform (from the book "Radical Markets") - charge a (say 1%) property tax on the patent based on self-assessed value, with the caveat that you MUST sell the patent to anyone willing to pay your claimed value. This basically destroys patent trolling, which only works because of the asymmetrical difference in cost between obtaining a patent and defending a patent lawsuit. If the troll prices the patent too low, the person they are suing just buys it, if they charge too much, they have a massive recurring tax bill (and an incentive to settle quickly, not to drag it out in the courts for years).” GNOME 3.34 releases with tab pinning, improved background panel, custom folders and more! GNOME 3.32 released with fractional scaling, improvements to desktop, web and much more Amazon patents AI-powered drones to provide ‘surveillance as a service’ Apple is patenting Swift features like optional chaining Open Invention Network expands its patent non-aggression coverage in Linux system  
Read more
  • 0
  • 0
  • 2460

article-image-introducing-espresso-an-open-source-pytorch-based-end-to-end-neural-automatic-speech-recognition-asr-toolkit-for-distributed-training-across-gpus
Amrata Joshi
24 Sep 2019
5 min read
Save for later

Introducing ESPRESSO, an open-source, PyTorch based, end-to-end neural automatic speech recognition (ASR) toolkit for distributed training across GPUs

Amrata Joshi
24 Sep 2019
5 min read
Last week, researchers from USA and China released a paper titled ESPRESSO: A fast end-to-end neural speech recognition toolkit. In the paper, the researchers have introduced ESPRESSO, an open-source, modular, end-to-end neural automatic speech recognition (ASR) toolkit. This toolkit is based on PyTorch library and FAIRSEQ, the neural machine translation toolkit. This toolkit supports distributed training across GPUs and computing nodes and decoding approaches that are commonly employed in ASR such as look-ahead word-based language model fusion. ESPRESSO is 4 to 11 times faster for decoding than similar systems like ESPNET and it achieves state-of-the-art ASR performance on data sets such as LibriSpeech, WSJ, and Switchboard. Limitations of ESPnet  ESPnet, an end-to-end speech processing toolkit, has some limitations: The code ESPnet is not easily extensible and also has issues related to portability due to its mixed dependency on PyTorch and Chainer, the deep learning frameworks. It uses a decoder which is based on a slow beam search algorithm that is not fast enough for quick turnaround of experiments. To address the above problems, the researchers introduced ESPRESSO. With ESPRESSO it is possible to plug new modules into the system by extending standard PyTorch interfaces.  The research paper reads, “We envision that ESPRESSO could become the foundation for unified speech + text processing systems, and pave the way for future end-to-end speech translation (ST) and text-to-speech synthesis (TTS) systems, ultimately facilitating greater synergy between the ASR and NLP research communities.” ESPRESSO is built on design goals The researchers implemented ESPRESSO based on certain design goals in mind. Firstly, they made use of pure Python / PyTorch for enabling modularity and extensibility. To speed up the experiments, the researchers implemented parallelization, distributed training and decoding. They achieved compatibility with Kaldi / ESPNET data format in order to reuse previous / proven data preparation pipelines. They made ESPRESSO exhibit interoperability with the existing FAIRSEQ codebase in order to make future joint research areas between speech and NLP, easy. ESPRESSO’s dataset classes The speech data for ESPRESSO follows the format in Kaldi, a speech recognition toolkit where utterances get stored in the Kaldi-defined SCP format. The researchers have followed ESPNET and have used the 80-dimensional log Mel feature along with the additional pitch features (83 dimensions for each frame).  ESPRESSO also follows FAIRSEQ’s concept of “datasets” that contains a set of training samples and abstracts. Based on the same concept, the researchers have created dataset classes in ESPRESSO: data.ScpCachedDataset This dataset contains the real-valued acoustic features that are extracted from the speech utterance. The training batch that is drawn from this dataset is a real-valued tensor of shape [BatchSize × TimeFrameLength × FeatureDims] and it will be fed to the neural speech encoder. As the acoustic features are large and they cannot be loaded into memory all at once, the researchers also implement sharded loading where bulk of features are pre-loaded once the previous bulk is consumed for training/decoding. This also balances the file system’s I/O load as well as memory usage. data.TokenTextDataset This dataset contains the gold speech transcripts as text where the training batches are an integer-valued tensor of shape [BatchSize × SequenceLength]. data.SpeechDataset data.SpeechDataset is a container for the above-mentioned datasets. The samples drawn from this dataset contain two fields including source and target and points to the speech utterance and gold transcripts respectively.  Achieving state-of-the-art ASR performance on LibriSpeech, WSJ, and Switchboard datasets ESPRESSO provides running recipes for a variety of data sets. The researchers have given details about their recipes on Wall Street Journal (WSJ), an 80-hour English newspaper speech corpus, Switchboard (SWBD), a 300-hour English telephone speech corpus and LibriSpeecha corpus which is of approximately 1,000 hours of English speech.  The data sets for ESPRESSO have their own extra text corpus that is used for training language models. These are models are optimized using Adam, a method used for stochastic optimization, with an initial learning rate 10−3. This rate is halved if the metric on the validation set at the end of an epoch does not show an improvement over the previous epoch. In case, the learning rate is less than 10−5, Also the training process stops.  Curriculum learning is used for LibriSpeech or WSJ / SWBD epochs, as it prevents training divergence and improves performance. NVIDIA GeForce GTX 1080 Ti GPUs is used for training/evaluating the models. In this paper, all the models are trained with 2 GPUs by using FAIRSEQ built-in distributed data parallellism.  To conclude, the researchers have presented ESPRESSO toolkit in this paper and has provided ASR recipes for LibriSpeech, WSJ, and Switchboard datasets. The paper reads, “By sharing the underlying infrastructure with FAIRSEQ, we hope ESPRESSO will facilitate future joint research in speech and natural language processing, especially in sequence transduction tasks such as speech translation and speech synthesis.” To know more about ESPRESSO in detail, check out the paper. Other interesting news in programming Nim 1.0 releases with improved library, backward compatibility and more Dgraph releases Ristretto, a fast, concurrent and memory-bound Go cache library .NET Core 3.0 is now available with C# 8, F# 4.7, ASP.NET Core 3.0 and general availability of EF Core 3.0 and EF 6.3
Read more
  • 0
  • 0
  • 6417

article-image-centos-8-released
Savia Lobo
24 Sep 2019
3 min read
Save for later

CentOS 8 released!

Savia Lobo
24 Sep 2019
3 min read
Today, the CentOS community released the much-awaited CentOS 8 (1905). RHEL 8 was released in May this year at the Red Hat Summit 2019. Users were highly anticipating this CentOS 8 rebuild. In CentOS 8, the community has partnered more closely with Fedora and will be sharing git repos with the Fedora system. Highlights of CentOS 8 As the CentOS Linux distribution is a platform derived from the sources of Red Hat Enterprise Linux (RHEL), it conforms fully with Red Hat's redistribution policy and aims to have full functional compatibility with the upstream product. Version control system and Database servers It will provide version control systems such as Git 2.18, Mercurial 4.8, and Subversion 1.10. Database servers such as MariaDB 10.3, MySQL 8.0, PostgreSQL 10, PostgreSQL 9.6, and Redis 5 have been included. GNOME Shell GNOME Shell has been rebased to version 3.28. The GNOME session and the GNOME Display Manager use Wayland as their default display server. The X.Org server, which is the default display server in RHEL 7, is available as well. Cryptography policies System-wide cryptographic policies, which configures the core cryptographic subsystems, covering the TLS, IPsec, SSH, DNSSEC, and Kerberos protocols, are applied by default. Python updates As Python 3.6 is the default Python implementation in RHEL 8, CentOS may get similar Python default updates. Also, limited support for Python 2.7 may be provided. No version of Python is installed by default. To know about all the highlights in detail, read the upstream Release Notes Deprecated functionalities Assuming the deprecations in RHEL 8, similar CentOS 8 features have been deprecated. The --interactive option of the ignoredisk Kickstart command has been deprecated. NFSv3 over UDP has been disabled. Digital Signature Algorithm (DSA) and Network scripts have been deprecated. TLS 1.0 and TLS 1.1 are deprecated To know more about the deprecated functionalities read the upstream documentation. Removed security functionality The Clevis HTTP pin has been removed shadow-utils no longer allow all-numeric user and group names securetty is now disabled by default To know more about the other removed security functionalities, read the upstream documentation. Known issues in CentOS 8 If the user is planning to install CentOS-8 in a VirtualBox guest, you should not select "Server with a GUI" (default) during the installation. Support for some adapters have been removed CentOS-8. ELRepo offers driver update disks (DUD) for some of those that are still commonly used. For the list of the device IDs provided by the ELRepo packages, please see here. Once CentOS-8 is installed, you can use the centosplus kernel (kernel-plus) which has support for those devices. While using the boot.iso and NFS to install, the automatic procedure for adding the AppStream-Repo will fail. You have to disable it and add the right NFS-path manually. To install and use CentOS 8 (1905), a minimum of 2 GB RAM is required. The community members recommend at least 4 GB RAM for it to function smoothly. To know more about CentOS 8 in detail, read CentOS wiki page. Other news in Tech .NET Core 3.0 is now available with C# 8, F# 4.7, ASP.NET Core 3.0 and general availability of EF Core 3.0 and EF 6.3 Introducing Weld, a runtime written in Rust and LLVM for cross-library optimizations Nim 1.0 releases with improved library, backward compatibility and more
Read more
  • 0
  • 0
  • 3996

article-image-nim-1-0-releases-with-improved-library-backward-compatibility-and-more
Amrata Joshi
24 Sep 2019
2 min read
Save for later

Nim 1.0 releases with improved library, backward compatibility and more

Amrata Joshi
24 Sep 2019
2 min read
Yesterday, the team at Nim announced Nim version 1.0, a general-purpose, compiled programming language that focuses on efficiency, readability and flexibility. Major changes in Nim 1.0 Backwards compatibility The switch -d:nimBinaryStdFiles has been removed in this release and stdin/stdout/stderr are now the binary files again.  In this release, the language definition and compiler are now stricter about gensym'ed symbols in hygienic templates.  Changes made to library The team has removed unicode.Rune16 in this release as the name ‘Rune16 ’ was wrong. In Nim 1.0, encodings.getCurrentEncoding distinguishes between the OS's encoding and console's encoding.  In this release, json.parseJsonFragments iterator can speedup JSON processing. Oid usage has been enabled in hashtables. std/monotimes module has been added that implements monotonic timestamps. Compiler In Nim 1.0, the Nim compiler warns about unused module imports. Users can use a top-level {.used.} pragma in the module that can be importable without giving a warning. In this version, the Nim compiler nomore recompiles the Nim project via nim c -r if case no dependent Nim file is changed. Users seem to be excited about this news and are appreciating the efforts taken by the team. A user commented on HackerNews, “Great! I love this language, so simple and powerful, so fast executables!”  Another user commented, “I would have never thought to live long enough to see this happening! I started using Nim in 2014, but abandoned it after a few years, frustrated by the instability of the language and what I perceived as a lack of vision. (In 2014, release 1.0 was said to be "behind the corner".) This release makes me eager to try it again. I remember that the language impressed me a lot: easy to learn, well-thought, and very fast to compile. Congratulations to the team!” Other interesting news in programming How Quarkus brings Java into the modern world of enterprise tech LLVM 9 releases with official RISC-V target support, asm goto, Clang 9, and more Twitter announces to test ‘Hide Replies’ feature in the US and Japan, after testing it in Canada
Read more
  • 0
  • 0
  • 2371
article-image-dgraph-releases-ristretto-a-fast-concurrent-and-memory-bound-go-cache-library
Amrata Joshi
24 Sep 2019
4 min read
Save for later

Dgraph releases Ristretto, a fast, concurrent and memory-bound Go cache library

Amrata Joshi
24 Sep 2019
4 min read
Last week, the team at Dgraph released Ristretto, a fast, fixed size, concurrent, memory-bound Go cache library. It is contention-proof and focuses on throughput as well as hit ratio performance.  There was a need for a memory-bound and concurrent Go cache in Dgraph so the team used a sharded map with shard eviction for releasing memory but that led to memory issues. The team then repurposed Groupcache’s LRU with the help of mutex locks for thread safety.  But later the team realised that the cache suffered from severe contention. The team removed this cache and improved their query latency by 5-10x as the cache was slowing down the process. The team realised that the concurrent cache story in Go is broken and it needs to be fixed.  The official page reads, “In March, we wrote about the State of Caching in Go, mentioning the problem of databases and systems requiring a smart memory-bound cache which can scale to the multi-threaded environment Go programs find themselves in.” Ristretto is built on 3 key principles  Ristretto is built on three key principles including fast accesses, high concurrency, contention resistance and memory bounding. Let’s discuss more about the principles and how the team achieved them: Fast hash with runtime.memhash The team experimented with store interface within Ristretto and found out that sync.Map performs well for read-heavy workloads but it deteriorates for write workloads. As there was no thread-local storage, the team worked with sharded mutex-wrapped Go maps that gave good performance results. The team used 256 shards to ensure that the performance doesn’t get affected while working with a 64-core server. With a shard based approach, the team also needed a quick way to understand which shard a key should go in. The long keys consumed too much memory so the team used uint64 for keys, instead of storing the entire key.  There was a need for using the hash of the key in multiple places and to quickly generate a fast hash, the team borrowed runtime.memhash from Go Runtime. The runtime.memhash function uses assembly code for generating a hash, quickly.  Handling concurrency and contention resistance with batching The team wanted to achieve high hit ratios but that would require managing metadata about the information that is currently present in the cache and the information that will be needed in it. They took inspiration from the paper BP-Wrapper that explains two ways for mitigating contention: prefetching and batching. The team only used ‘batching’ to lower contention instead of acquiring a mutex lock for every metadata mutation. While talking about concurrency, Ristretto performs well under heavy concurrent load but it would lose some metadata while delivering better throughput performance. The page reads, “Interestingly, that information loss doesn’t hurt our hit ratio performance because of the nature of key access distributions. If we do lose metadata, it is generally lost uniformly while the key access distribution remains non-uniform. Therefore, we still achieve high hit ratios and the hit ratio degradation is small as shown by the following graph.” Key cost The workloads usually have variable-sized values where one value ncan cost a few bytes while another will cost few kilobytes and some other value might cost a few megabytes. In this case, it is not possible to have the same memory cost for all of them. In Ristretto, the cost is attached to every key-value and users can easily specify what that cost is while calling the Set function. This cost is calculated against the MaxCost of the cache.  The page reads, “When the cache is operating at capacity, a heavy item could displace many lightweight items. This mechanism is nice in that it works well for all different workloads, including the naive approach where each key-value costs 1.” To know more about Ristretto and its key principles in detail, check out the official post. Other interesting news in programming How Quarkus brings Java into the modern world of enterprise tech LLVM 9 releases with official RISC-V target support, asm goto, Clang 9, and more Twitter announces to test ‘Hide Replies’ feature in the US and Japan, after testing it in Canada
Read more
  • 0
  • 0
  • 2975

article-image-net-core-3-0-available-c-8-asp-net-core-3-general-availability-ef-core-3-ef-6-3
Sugandha Lahoti
24 Sep 2019
5 min read
Save for later

.NET Core 3.0 is now available with C# 8, F# 4.7, ASP.NET Core 3.0 and general availability of EF Core 3.0 and EF 6.3

Sugandha Lahoti
24 Sep 2019
5 min read
Yesterday, at the ongoing .NET Conference 2019, NET Core 3.0 was released along with ASP.NET Core 3.0 and Blazor updates. C#8 and F# 4.7 is also a part of this release. Entity Framework Core 3.0 and Entity Framework 6.3 are now generally available. What’s new in .NET Core 3.0 .NET Core 3.0 now includes adding Windows Forms and WPF (Windows Presentation Foundation), adding new JSON APIs, support for ARM64, and improving performance across the board. Here are the key highlights: Support for Windows Desktop apps .NET Core supports Windows Desktop apps for both Windows Forms and WPF (and open source). The WPF designer is part of Visual Studio 2019 16.3, which was also released yesterday. This includes new templates and an updated XAML designer and XAML Hot Reload. The Windows Forms designer is still in preview and available as a VSIX download. Support for C# 8 and F# 4.7 C# 8 was released last week and adds async streams, range/index, more patterns, and nullable reference types. F# 4.7 was released in parallel to .NET Core 3.0 with a focus on infrastructural changes to the compiler and core library and some relaxations on previously onerous syntax requirements. It also includes support for LangVersion and ships with nameof and opening of static classes in preview. Read Also: Getting started with F# for .Net Core application development [Tutorial] .NET Core apps now have executables by default This means apps can now be launched with an app-specific executable, like myapp or ./myapp, depending on the operating system. Support for new JSON APIs High-performance JSON APIs have been added, for reader/writer, object model, and serialization scenarios. These APIs minimize allocations, resulting in faster performance, and much less work for the garbage collector. Support for Raspberry Pi and Linux ARM64 chips These chips enable IoT development with the remote Visual Studio debugger. You can deploy apps that listen to sensors, and print messages or images on a display, all using the new GPIO APIs. ASP.NET can be used to expose data as an API or as a site that enables configuring an IoT device. Read Also: .NET Core 3.0 Preview 6 is available, packed with updates to compiling assemblies. .NET Core 3.0 is a ‘current’ release and will be available with RHEL 8. It will be superseded by .NET Core 3.1, targeted for November 2019. If you're on .NET Core 2.2 you have until the end of the year to update to 3.1, which will be LTS. You can read a detailed report of all .NET Core 3.0 features. What's new in ASP.NET Core 3.0 ASP.NET Core 3.0 is also released in parallel to .NET Core for building web apps. Notably, ASP.NET Core 3.0 has Blazor, a new framework in ASP.NET Core for building interactive client-side web UI with .NET. With Blazor, you can create rich interactive UIs using C# instead of JavaScript. You can also share server-side and client-side app logic written in .NET. Blazor renders the UI as HTML and CSS for wide browser support, including mobile browsers. Other updates in ASP.NET Core 3.0: You can now create high-performance backend services with gRPC. SignalR now has support for automatic reconnection and client-to-server streaming. Endpoint routing integrated through the framework. HTTP/2 now enabled by default in Kestrel. Authentication support for Web APIs and single-page apps integrated with IdentityServer Support for certificate and Kerberos authentication. New generic host sets up common hosting services like dependency injection (DI), configuration, and logging. New Worker Service template for building long-running services. For a full list of features, visit Microsoft Docs. Entity Framework Core 3.0 and Entity Framework 6.3 are now generally available with C# 8 As a part of the .NET Core 3.0 release, Entity Framework Core 3.0 and Entity Framework 6.3 are now generally available on nuget.org. New updates in EF Core 3.0 include: Newly architectured LINQ provider to translate more query patterns into SQL, generating efficient queries in more cases, and preventing inefficient queries from going undetected. Cosmos DB support to help developers familiar with the EF programming model to easily target Azure Cosmos DB as an application database. EF 6.3 brings the following new improvements to the table: With support for .NET Core 3.0, the EF 6.3 runtime package now targets .NET Standard 2.1 in addition to .NET Framework 4.0 and 4.5. Support for SQL Server hierarchyid Improved compatibility with Roslyn and NuGet PackageReference Added the ef6.exe utility for enabling, adding, scripting, and applying migrations from assemblies. This replaces migrate.exe .NET Core 3.0 is a major new release of .NET Core. Developers have widely appreciated the announcement. https://twitter.com/dotMorten/status/1176172319598759938 https://twitter.com/robertmclaws/status/1176206536546357248 https://twitter.com/JaypalPachore/status/1176200191021473792 Interested developers can start updating their existing projects to target .NET Core 3.0. The release is compatible with earlier .NET Core versions which makes updating easier. Other interesting news in Tech Introducing Weld, a runtime written in Rust and LLVM for cross-library optimizations. Chrome 78 beta brings the CSS Properties and Values API, the native File Systems API and more. LLVM 9 releases with official RISC-V target support, asm goto, Clang 9 and more.
Read more
  • 0
  • 0
  • 4556

article-image-llvm-9-releases-with-official-risc-v-target-support-asm-goto-clang-9-and-more
Vincy Davis
20 Sep 2019
5 min read
Save for later

LLVM 9 releases with official RISC-V target support, asm goto, Clang 9, and more

Vincy Davis
20 Sep 2019
5 min read
Yesterday, the LLVM team announced the stable release of LLVM 9; though LLVM 9.0 missed its planned release date, which was 28th August. LLVM 9.0 RC3 was made available earlier this month. With LLVM 9, the RISC-V target is now out of the experimental mode and turned on by default. Other changes include improved support for asm goto in the MIPS target, another assembly-level support added to the Armv8.1-M architecture, new immarg parameter attribute added to the LLVM IR, and more. LLVM 9 also explores many bug fixes, optimizations, and diagnostics improvements. LLVM 9 also presents an experimental support for C++ in Clang 9. What’s new in LLVM 9 Two new extension points, called EP_FullLinkTimeOptimizationEarly and EP_FullLinkTimeOptimizationLast are available as plugins for specializing the legacy pass manager full LTO pipeline. A new COFF object files/executables support for llvm-objcopy/llvm-strip. It will support the most common copying/stripping options. LLVM_ENABLE_Z3_SOLVER has replaced the CMake parameter CLANG_ANALYZER_ENABLE_Z3_SOLVER. LLVM 9.0 has finally made the “experimental” RISC-V LLVM backend “official” and will be enabled by default. This means that it no longer needs to be enabled by LLVM_EXPERIMENTAL_TARGETS_TO_BUILD. The RISC-V Target has full codegen support for the RV32I and RV64I based RISC-V instruction set variants, along with the MAFDC standard extensions. Explaining the reason behind this update, Alex Bradbury, CTO and Co-Founder of the lowRISC said, “As well as being more convenient for end users, this also makes it significantly easier for e.g. Rust/Julia/ Swift and other languages using LLVM for code generation to do so using the system-provided LLVM libraries. This will make life easier for those working on RISC-V ports of Linux distros encountering issues with Rust dependencies.” A new support for target-independent hardware loops is added along with PowerPC and Arm implementations, in IR. Other changes in LLVM 9 LLVM IR: A new immarg parameter attribute is added. It indicates that an intrinsic parameter is required to be a simple constant. The atomicrmw xchg now allows floating point types and supports fadd and fsub. ARM Backend: A assembly-level support is added for the Armv8.1-M architecture, including the M-Profile Vector Extension (MVE). Another pipeline model to be used for cores is also added to Cortex-M4. MIPS Target: Improved experimental support for GlobalISel instruction selection framework. New support for .cplocal assembler directive, sge, sgeu, sgt, sgtu pseudo instructions and asm goto constraint. PowerPC Target: Improved handling of TOC pointer spills for indirect calls and better precision of square root reciprocal estimates. SystemZ Target: A new support for the arch13 architecture is added. The builtins for the new vector instructions can be enabled using the -mzvector option. What’s new in Clang 9? With the stable release of LLVM 9, Clang 9 official release was also made available. The major new feature in Clang 9 is the new addition of experimental support for C++ for OpenCL. Clang 9 also new compiler flags- -ftime-trace and ftime-trace-granularity=N.  C Language improvements in Clang 9 The __FILE_NAME__ macro is added as a Clang specific extension and supports all C-family languages. It also provides initial support for asm goto statements for control flow from inline assembly to labels. The main consumers of this construct are the Linux kernel (CONFIG_JUMP_LABEL=y) and glib. Also, with the addition of asm goto support, the mainline Linux kernel for x86_64 is now buildable and bootable with Clang 9. The release notes also specifies about an issue that could not be fixed before the LLVM 9 release, “PR40547 Clang gets miscompiled by GCC 9.” C++ Language improvements in Clang 9 An experimental support for C++is added to OpenCL. Clang 9 also brings backward compatibility with OpenCL C v2.0. Other implemented features include: The address space behavior is improved in the majority of C++ features like templates parameters and arguments, reference types, type deduction, and more. OpenCL-specific types like images, samplers, events, pipes, are now accepted OpenCL standard header in Clang can be compiled in C++ mode Users are happy with the LLVM 9 features, especially the support for asm goto. A user on Hacker News comments, “This is big. Support for asm goto was merged into the mainline earlier this year, but now it's released [1]. Aside from the obvious implications of this - being able to build the kernel with LLVM - working with eBPF/XDP just got way easier” Another user says, “The support for asm goto is great for Linux, no longer being dependent on a single compiler for one of the most popular ISAs can only be a good thing for the overall health of the project.” For the complete list of changes, check out the official LLVM 9 release notes. Other news in Programming Dart 2.5 releases with the preview of ML complete, the dart:ffi foreign function interface and improvements in constant expressions Microsoft releases Cascadia Code version 1909.16, the latest monospaced font for Windows Terminal and Visual Studio Code Linux 5.3 releases with support for AMD Navi GPUs, Zhaoxin x86 CPUs and power usage improvements
Read more
  • 0
  • 0
  • 5707
article-image-twitter-announces-to-test-hide-replies-feature-in-the-us-and-japan-after-testing-it-in-canada
Amrata Joshi
20 Sep 2019
4 min read
Save for later

Twitter announces to test ‘Hide Replies’ feature in the US and Japan, after testing it in Canada

Amrata Joshi
20 Sep 2019
4 min read
Yesterday, the team at Twitter announced to test a new feature called “Hide Replies” in the US and Japan after testing it in Canada. Twitter’s Hide Replies feature lets users hide all those unwanted trolls, abuse, bully and replies on their tweet. The company aims towards civilized conversations on Twitter and to give more control to the users. Users can now decide which reply will be hidden from other users but those who choose to view the hidden replies will still be able to see them by clicking on an icon that would bring up all the hidden tweets. Users can hide replies on both the app and desktop versions of the website.  Observations from the Canadian ‘Hide Replies’ feature test In July this year, the The Twitter team tested out the ‘Hide Replies’ feature in Canada and tried to understand how conversations on the platform change when a person (who starts a conversation) hides the replies.  The team observed that users often hide those replies that they think are not relevant, unintelligible or abusive. According to their survey, the ones who used this feature found it helpful. Also, the users were more likely to reconsider their interactions when their tweets were hidden. Around 27% of the users who had their tweets hidden thought of reconsidering their interactions with others in the future. Hiding someone’s replies can also lead to confusion as it could be misunderstood, so Twitter notifies the user if they wish to block the user. The official post reads, “People were concerned hiding someone’s reply could be misunderstood and potentially lead to confusion or frustration. As a result, now if you tap to hide a Tweet, we’ll check in with you to see if you want to also block that account.” According to the team, the Canadian test showed positive results as the feature helped users have better conversations. In an announcement regarding the feature’s Canada launch, the company said, “Everyday, people start important conversations on Twitter, from #MeToo and #BlackLivesMatter, to discussions around #NBAFinals or their favorite television shows. These conversations bring people together to debate, learn, and laugh. That said we know that distracting, irrelevant, and offensive replies can derail the discussions that people want to have. Ultimately, the success of ‘hide replies’ will depend on how people use it, but it could mean friendlier — and more filtered — conversations.” Twitter’s Hide Replies feature: will it really improve conversations? The Hide Replies feature is a great addition to the list of the block and mute options on Twitter but it could possibly turn into a slight restriction on freedom of speech. In case, the replies weren't abusive or offensive but are strong views about a subject and the author still decides to hide that reply, then the user who replied might not understand the reason behind hiding the reply. But the good thing is that users can opt to still see the hidden replies. So in this case, the hidden responses aren’t being completely silenced but it will now take an extra click to view them. Also, if the platform still shows the hidden replies then the motive of hiding the replies fails there itself. While it is still not clear as to how will Twitter curtail abusive comments or bullies on the Twitter thread with this feature as it doesn’t delete them but simply hide them. Few Twitter users are not happy with this feature and think it is irrelevant if the user first hides the replies and than again it will appear on clicking the option to see the hidden replies. https://twitter.com/QWongSJ/status/1174795321211158528 https://twitter.com/scott_satzer/status/1174890804143374336 https://twitter.com/CartridgeGames/status/1174857548777885697 https://twitter.com/camimosas/status/1174850022694952960 https://twitter.com/KyleTWN/status/1174828502769471488 https://twitter.com/iFireMonkey/status/1174791634736861207 To know more about this news, check out the official post. Other interesting news in programming Dart 2.5 releases with the preview of ML complete, the dart:ffi foreign function interface and improvements in constant expressions Microsoft releases Cascadia Code version 1909.16, the latest monospaced font for Windows Terminal and Visual Studio Code DevOps platform for coding, GitLab reached more than double valuation of $2.75 billion than its last funding and way ahead of its IPO in 2020  
Read more
  • 0
  • 0
  • 2086

article-image-dart-2-5-releases-with-the-preview-of-ml-complete-the-dartffi-foreign-function-interface-and-improvements-in-constant-expressions
Vincy Davis
20 Sep 2019
4 min read
Save for later

Dart 2.5 releases with the preview of ML complete, the dart:ffi foreign function interface and improvements in constant expressions

Vincy Davis
20 Sep 2019
4 min read
Last week, Michael Thomsen, the Project Manager for Dart announced the stable release of Dart 2.5 SDK (Software Development Kit). This release includes two technical previews of ML Complete and the dart:ffi foreign function interface to be used for calling C code directly from Dart. Dart 2.5 also brings improved support for constant expressions. Preview of ML Complete In his blog, Thomsen has regarded ML Complete as a “powerful addition” to their existing suite of productivity tools like hot reload, customizable static analysis, and Dart DevTools. It works by training a model of possible member occurrences in a given context. The possible occurrences can be analyzed from the available open-source Dart code on Github. The training model uses TensorFlow Lite tools to predict the next probable symbol, while the developer is editing. As ML Complete is built directly into the Dart analyzer, it is available on all Dart-enabled editors including Android Studio, IntelliJ, and VS Code. Since it is still in preview, developers are advised to use the Flutter dev channel or the Dart dev channel for previewing this feature. Preview of the dart:ffi foreign function interface The dart:ffi feature enables users to take advantage of the existing native APIs, where Dart code is already running. Users can also utilize the existing cross-platform native libraries written in C. Currently, the support for calling C directly from Dart is limited to the Dart VM deep integration which uses native extensions. The new dart:ffi foreign function interface will function on a new mechanism, offering great performance, easy approach, and will work across many Dart supported platforms and compilers. Dart-C interop works on two main scenarios: Calling a C-based system API on the host operating system (OS) For calling a C-based system API, the Linux command system is used. The system command allows the execution of any system command. It also allows the argument to be essentially passed to the shell/terminal and also run there. For implementing the dart:ffi, the Dart code needs to represent the C function and the types of its arguments and return type. It also needs to represent the corresponding Dart function, and its types. Both the representations are done by defining two typedefs in the C header for the command. Calling a C-based library for a single OS or cross-platform The dart:ffi feature is also used to implore C-based frameworks and components. It will allow the user to run TensorFlow across all the operating systems where code completion is needed. It also offers high performance of the native TensorFlow implementation. Thomsen adds, “We also expect that the ability to call C-based libraries will be of great use to Flutter apps. You can imagine calling native libraries such as Realm or SQLite, and we think dart:ffi will be valuable for enabling plugins for Flutter desktop.” Developers are advised to use the Flutter master channel or a Dart dev channel to quickly learn about the changes and improvements in the dart:ffi feature. Read Also: Dart 2.2 is out with support for set literals and more! Improvements in constant expressions In the earlier versions, the abilities of constant expressions were limited, however, Dart 2.5 includes many new changes. In Dart 2.5, constant expressions can be defined using many ways, which includes the ability to use casts and the new control flow and collection spread features. Image Source: Medium Users love Dart 2.5 features. https://twitter.com/geek_timofey/status/1171507571372380167 https://twitter.com/Fredrikkerlund2/status/1171461649217097728 https://twitter.com/RashidG92908642/status/1171910418807369728 To know more about this announcement in detail, visit Michael Thomsen’s blog on Medium. Other Interesting News in Programming Microsoft releases Cascadia Code version 1909.16, the latest monospaced font for Windows Terminal and Visual Studio Code Microsoft open-sources its C++ Standard Library (STL) used by MSVC tool-chain and Visual Studio Linux 5.3 releases with support for AMD Navi GPUs, Zhaoxin x86 CPUs and power usage improvements
Read more
  • 0
  • 0
  • 2867