New in .NET: ML.NET/Model Builder Updates, PeachPie 1.0, Xamarin Performance Monitoring
Updates to Microsoft's AI/ML tooling highlight recent developments in the .NET dev world, which include PeachPie 1.0 (PHP in .NET) and new performance monitoring support for Xamarin.
Microsoft regularly updates ML.NET, an open source, cross-platform machine learning (ML) framework for .NET devs, along with the integral Model Builder component that features a simple visual interface for building, training and deploying custom ML models without requiring deep expertise.
For Model Builder, the March 2021 update includes:
- Config-based training with generated code-behind files: "Now when you right-click on your project in Solution Explorer and Add > Machine Learning, the Add New Item Dialog opens, and you can add an ML.NET Model."
There's much more detail in the post about the new Model Builder experience, summarized in the ability of devlopers to:
- Specify the name of a model and generated code
- Have more than one Model Builder-generated model in a solution
- Save state and come back to the last saved state, such that if you spend an hour training and close out of Model Builder, now you don't have to start over and can just pick up where you left off
- Share the *.mbconfig file and collaborate on the same Model Builder instance via source control
- Use the same *.mbconfig file in Model Builder and the ML.NET CLI (coming soon!)
- Restructured Advanced Data Options: These improve on previously introduced data loading functionality. "In this release, we added several more options and reorganized the options to make selecting your column settings even easier."
- Redesigned Consume step: "We have redesigned the consume step to make a smooth transition from training and evaluating a model to using that model to make predictions in an end-user application.
ML.NET, meanwhile, was updated to v1.5.5, with new features including:
- A new API that accepts double type for the confidence level which helps when you need to have higher precision than an
int will allow for
- Support for export ValueMapping estimator to ONNX
- New API to specify if the output from TensorFlow is batched or not (previously ML.NET always assumed it was a batch amount which caused errors when that wasn't true)
Read all about it in the release notes.
In the works for years, this ".NET development platform for PHP" coming from the .NET Foundation has emerged in a milestone release. PHP, sometimes called "Hypertext Preprocessor" is a traditional web-dev mainstay scripting language.
"We've focused on a few open source PHP projects, as well as our clients' applications for version 1.0.0 and we essentially intended to get them running on .NET fluently," the project announced on March 14. The team also needed to provide these features for practical usability:
- PHP projects can be opened, built, debugged and profiled in Visual Studio
- The latest WordPress version running on .NET, without any source files, including WordPress, the majority of plugins, e.g. Woocommerce and Elementor and themes
- Selected composer packages compile and can be used as a class library by a C# project (Twig, PHPUnit, RandomLib, dependencies of the Laravel framework)
- Code Analysis (compilation) provides detailed and useful diagnostics about the PHP code
"Since PHP is .NET now, you can run it on Android and iOS, as well as on IoT devices. Moreover, it runs right in the browser as a web assembly," the post said.
Sentry Performance Monitoring for Xamarin
Application monitoring specialist Sentry announced its performance monitoring capabilities are now extended to Xamarin.
But that Microsoft cross-platform development framework -- now being evolved and integrated with .NET 6 -- is just one of the new options announced by Sentry, with others being React Native and Android.
"Frameworks that enable cross-platform development are rising in popularity, "Sentry said. "Used by roughly one-third of mobile developers, top frameworks include React Native, Xamarin and Google's Flutter. But whether a developer is building an app for Android or software for in-car experiences, a primary challenge is dealing with all the dependencies that can affect an application's uptime and performance across multiple platforms."
David Ramel is an editor and writer for Converge360.