jQuery 3.6.4 Released: Selector Forgiveness

If you’ve been following along with recent jQuery releases, we have been working on how to address the recent addition of some new selectors in browsers, especially :has. jQuery 3.6.3 settled on the strategy of using native CSS.supports to determined whether a selector should be passed directly to querySelectorAll or instead go through jQuery’s selector engine, as might be the case when using jQuery selector extensions, complex :not(), or other selectors that are valid in jQuery but not in the browser. That all technically worked fine, but came with a downside. Fortunately for us, the fix is no longer necessary and we can go back to the old way. More on that below.

As usual, the release is available on our cdn and the npm package manager. Other third party CDNs will probably have it soon as well, but remember that we don’t control their release schedules and they will need some time. Here are the highlights for jQuery 3.6.4.

The Difference Between What Is Right and What Is Allowed

Whenever you use a selector in CSS, or JS, there is more than one spec involved. There’s a spec to determine whether a selector is valid (i.e. Selectors) and there’s a spec to guide implementers in how a selector should be parsed (i.e. the parser algorithm for consuming a simple block). The parser implementation is more forgiving than the selector spec itself, to allow for things like attribute selectors missing the last ] character.

When we addressed an issue with some selectors that were being added to modern browsers—specifically :has—we started making use of another API available in most of our supported browsers—CSS.supports—to determine whether a selector could safely be passed to native querySelectorAll or whether it needed to go through jQuery’s selector engine. Selectors may need to bypass qSA for multiple reasons. It may be a jQuery-only selector extension (:contains), a standard selector that jQuery supports in a more robust way (:not(complex)), or a selector we know to be buggy sometimes (:enabled or :disabled). Whatever the reason, the introduction of “forgiving parsing” in selectors like :has made our previous way of determining that an issue because the browser would no longer throw errors for some truly invalid selectors. For instance, :has(:contains) no longer threw an error when passed to querySelectorAll. Neither did :has(:monkey) for that matter. CSS.supports seemed to be the answer.

And yet, every solution can have a trade-off. The problem now was that selectors that were technically invalid according to the Selectors spec were throwing errors. But these same selectors used to work fine because the parsers were more, for lack of a better term, forgiving. Essentially, CSS.supports is not as forgiving as the parser.

Meanwhile, in our discussions with spec writers and vendors, it was agreed that we needed to prevent issues similar to the one with :has from happening again in the future. What does that mean? It means we can go back to the old way . . . mostly. While the spec has been updated, browsers will need some time to update their implementations. And because of that, we still recommend upgrading jQuery to the latest version.

Upgrading

We do not expect compatibility issues when upgrading from a jQuery 3.0+ version. To upgrade, have a look at the new 3.5 Upgrade Guide. If you haven’t yet upgraded to jQuery 3+, first have a look at the 3.0 Upgrade Guide.

The jQuery Migrate plugin will help you to identify compatibility issues in your code. Please try out this new release and let us know about any issues you experienced.

If you can’t yet upgrade to 3.5+, Daniel Ruf has kindly provided patches for previous jQuery versions.

Download

You can get the files from the jQuery CDN, or link to them directly:

https://code.jquery.com/jquery-3.6.4.js

https://code.jquery.com/jquery-3.6.4.min.js

You can also get this release from npm:

npm install [email protected]

Slim build

Sometimes you don’t need ajax, or you prefer to use one of the many standalone libraries that focus on ajax requests. And often it is simpler to use a combination of CSS and class manipulation for web animations. Along with the regular version of jQuery that includes the ajax and effects modules, we’ve released a “slim” version that excludes these modules. The size of jQuery is very rarely a load performance concern these days, but the slim build is about 6k gzipped bytes smaller than the regular version. These files are also available in the npm package and on the CDN:

https://code.jquery.com/jquery-3.6.4.slim.js

https://code.jquery.com/jquery-3.6.4.slim.min.js

These updates are already available as the current versions on npm and Bower. Information on all the ways to get jQuery is available at https://jquery.com/download/. Public CDNs receive their copies today, please give them a few days to post the files. If you’re anxious to get a quick start, use the files on our CDN until they have a chance to update.

Thanks

Thank you to all of you who participated in this release by submitting patches, reporting bugs, or testing, including Michal Golebiowski-Owczarek and the whole jQuery team.

We’re on Mastodon!

jQuery now has its very own Mastodon account. We will be cross posting to both Twitter and Mastodon from now on. Also, you may be interested in following some of our team members that have Mastodon accounts.

jQuery: https://social.lfx.dev/@jquery

mgol: https://hachyderm.io/@mgol

timmywil: https://hachyderm.io/@timmywil

Changelog

Full changelog: 3.6.4

Build

Update Sizzle from 2.3.9 to 2.3.10 (#5194, dbe09e39)
Updating the 3.6-stable version to 3.6.4-pre. (a0d68b84)

Flatlogic Admin Templates banner

A new jQuery release for Xmas

#​619 — December 16, 2022

Read on the Web

? This is the final issue of the year – we’ll be back on January 6, 2023. We hope you have a fantastic holiday season, whether or not you are celebrating, and we’ll see you for a look back at 2022 in the first week of January 🙂
__
Peter Cooper and the Cooperpress team

JavaScript Weekly

Announcing SvelteKit 1.0Svelte is a virtual DOM-free, compiled ahead of time, frontend UI framework with many fans. SvelteKit introduces a framework and tooling around Svelte to build complete webapps. This release post explains some of its approach and how it differs to other systems.

The Svelte Team

Dr. Axel Tackles Two Proposals: Iterator Helpers and Set Methods — Here’s something to get your teeth into! Dr. Axel takes on two promising ECMAScript proposals and breaks down what they’re about and why they’ll (hopefully) become useful to JavaScript developers. The first tackles iterator helpers (new utility methods for working with iterable data) and the second tackles Set methods which will extend ES6’s Set object.

Dr. Axel Rauschmayer

? Retire your Legacy CMS with ButterCMS — ButterCMS is your new content backend. We’re SaaS so we host, maintain, and scale the CMS. Enable your marketing team to update website + app content without needing you. Try the #1 rated SaaS Headless CMS for your JS app today. Free for 30 days.

? ButterCMS sponsor

?  The Best of Node Weekly in 2022 — In this week’s issue of Node Weekly (our Node.js-focused sister newsletter) we looked back at the most popular items of the year, including the Tao of Node, an array of JavaScript testing best practices, and the most popular Node.js frameworks in 2022.

Node Weekly Newsletter

jQuery 3.6.2 Released — Humor me. You might not be using jQuery anymore, but it’s (still) the most widely deployed JavaScript library and it’s fantastic to see it being maintained.

jQuery Foundation

IN BRIEF:

Node 19.3.0 (Current) has been released to bring npm up to v9.2. Breaking changes in v9.x warrant this update and the release post explains the current policy around npm’s ongoing inclusion in Node.

ƛ The Glasgow Haskell Compiler (GHC) has gained a new JavaScript backend meaning the reference Haskell compiler can now emit JavaScript and be used more easily to build front-end apps.

GitHub is rolling out secrets scanning to all public repos for free.

The New Stack reflects on 2022 as a ‘golden year’ for JavaScript and some of the developments we’ve seen. We’ll be doing our own such roundup in the next issue.

RELEASES:

Node.js 16.19.0 (LTS) and 14.21.2 (LTS)

Chart.js 4
↳ Canvas-based chart library. (Samples.)

PouchDB 8.0
↳ CouchDB-inspired syncing database.

SWR 2.0 – React data-fetching library.

? Articles & Tutorials

Why Cypress v12 is a Big Deal — A practical example-led love letter of sorts to how the latest version of the popular Cypress ‘test anything that runs in a browser’ library makes testing frontend apps smoother than before.

Gleb Bahmutov

Five Challenges to Building an Isomorphic JS Library — When it comes to JavaScript, “isomorphic” means code or libraries that run both on client and server runtimes with minimal adaptations.

Nick Fahrenkrog (Doordash)

▶  A Podcast for Candid Chats on Product, Business & Leadership — Join Postlight leaders & guests as they discuss topics like running great meetings & creating solid product launches.

The Postlight Podcast sponsor

Next, Nest, Nuxt… Nust?“This blog post is for everyone looking for their new favorite JavaScript backend framework.” If the names of frameworks are all starting to blur together in your head, this is for you. Marius explains just what systems like Next and Gatsby do and touches on a few differences.

Marius Obert (Twilio)

Calculating the Maximum Diagonal Distance in a Given Collection of GeoJSON Features using Turf.js — This is cool. Turf.js is a geospatial analysis library, by the way.

Piotr Jaworski

Optimize Interaction to Next Paint — How to optimize for the experimental Interaction to Next Paint (INP) metric — a way to assess a page’s overall responsiveness to user interactions.

Jeremy Wagner & Philip Walton (Google)

Need to Upgrade to React 18.2? Don’t Have Time? Our Experts Can Help — Stuck in dependency hell? We’ve been there. Hire our team of experts to upgrade deps, gradually paying off tech debt.

UpgradeJS.com – JavaScript Upgrade Services by OmbuLabs sponsor

How We Configured pnpm and Turborepo for Our Monorepo

Pierre-Louis Mercereau (NHost)

Rendering Emails with Svelte

Gautier Ben Aim

? Code & Tools

Wretch 2.3: A Wrapper Around fetch with an Intuitive Syntax — A long standing, mature library that makes fetch a little more extensible with a fluent API. Check the examples.

Julien Elbaz

SWR 2.0: Improved React Hooks for Data Fetching — The second major release of SWR (Stale-While-Revalidate) includes new mutation APIs, new developer tools, as well as improved support for concurrent rendering.

Ding, Liu, Kobayashi, and Xu

Don’t Let Your Issue Tracker Be a Four-Letter Word. Use Shortcut

Shortcut (formerly Clubhouse.io) sponsor

vanilla-tilt.js 1.8: A Smooth 3D Tilting Effect Library — No dependencies and simple to use and customize. GitHub repo.

Șandor Sergiu

visx: Airbnb’s Low Level Visualization React Components — Bring your own state management, animation library, or CSS-in-JS.. visx can slot into any React setup. Demos.

Airbnb

Scene.js 1.7: A CSS Timeline-Based Animation Library — Plenty of examples on the site. Has components for React, Vue and Svelte.

Daybrush

PortalVue 3.0
↳ Feature-rich portal plugin for Vue 3.

Kea 3.1
↳ Composable state management for React.

jest-puppeteer 6.2
↳ Run tests using Jest + Puppeteer.

NodeBB 2.7 – Node.js based forum software.

Pino 8.8 – Fast JSON-oriented logger.

? Jobs

Software Engineer — Join our “kick ass” team. Our software team operates from 17 countries and we’re always looking for more exceptional engineers.

Stickermule

Developer Relations Manager — Join the CKEditor team to build community around an Open Source project used by millions of users around the world ?

CKEditor

Find JavaScript Jobs with Hired — Create a profile on Hired to connect with hiring managers at growing startups and Fortune 500 companies. It’s free for job-seekers.

Hired

? And one for fun

Snow.js: Add a Snow Effect to a Web Page — Well, it’s that time of the year (in some parts of the world!) If you’re more interested in how the effect is made, it’s inspired by this CodePen example built around some fancy CSS.

Or if you’re a bit more childish, you could always put Fart.js on your site.. ?

Merry Christmas to you all and we’ll see you again in 2023!

Flatlogic Admin Templates banner

Sing App React and Light Blue React Admin templates Update

We are happy to announce an update of one of our first React Admin TemplatesSing App React and Light Blue React!

What react admins are affected by the update?

Current 5 React Admin boilerplates are affected by updates:

Sing App React
Sing App React Node.js
Sing App React Java
Light Blue React
Light Blue React Node.js

What has changed?

Now the admin boilerplates use React 17, and Bootstrap 5. Additionally, we have updated the colors, typography, and some minor UI parts.

And also we made several minor changes that make this admin dashboard template up-to-date.

Updated Amcharts to the latest version
Updated Fullcalendar to the latest version
Updated Axios
Updated Sortable library to the latest stable version
Updated Awesome Bootstrap checkbox that it now supports Bootstrap 5

Thus now, Sing App React and Light Blue React Admin Templates are one of the most modern react admin on the market in terms of technologies used under the hood and the look of the boilerplate.

Summing Up

For the rest of our React templates, check our marketplace. If you face any difficulties setting up this or that template or admin dashboard, please feel free to leave us a message on our forumTwitter or Facebook. We will respond to your inquiry as quickly as possible!

The post Sing App React and Light Blue React Admin templates Update appeared first on Flatlogic Blog.Flatlogic Admin Templates banner

Angular Material Admin Template Update

Angular Material Admin is updated and use latest dependencies.

What products are affected by the update?

Currently, the updates were released on 2 products:

Angular Material Admin Template Full
Angular Material Admin .NET Core

What has changed?

The main update is touch the version of Angular itself, now the template are built on 13 version instead of 11.

And also we made several minor changes that make this admin dashboard template up-to-date.

Updated the Angular CLI to 13
Update Angular Material;
Updated different packages;
Updated Angular Core to 13 version.

Moving forward and Summing Up

We will be constantly updating all our Angular templates. For sure we will release this year a template based on Angular 14.

Rest of our Angular templates your can find here: Flatlogic marketplace. If you face any difficulties setting up this or that template or admin dashboard, please feel free to leave us a message on our forumTwitter or Facebook. We will respond to your inquiry as quickly as possible!

And also check our platform where you can create Angular CRUD apps literally in minutes! 

Happy developing!

The post Angular Material Admin Template Update appeared first on Flatlogic Blog.

Flatlogic Admin Templates banner

React Material Admin Full Update

As Material UI and React continue to grow and develop it has become clear that React Material Admin can’t live with the outdated versions of those libraries.

What products are affected by the update?

Currently, the updates were released on 2 products:

React Material Admin Full
React Material UI Admin Node.js

What has changed?

The main change is that now those templates are now using React 17 and Material UI 5, previously it was 16 and 4 versions accordingly.

And also we made several minor changes that make this admin dashboard template up-to-date.

Fullcalendar was updated to the 5.11 version
Added Datefns as datepicker library
Updated Apexcharts to version 3.35
Updated Formik library to the latest stable version
Mui-datatables library was updated to version 4
We have added Redux for management CRUD functions and authorization

As a result, the speed and usability of the React Material Admin template increased. Additionally, you don’t need to spend your time updating all those technologies by yourself, so you can focus on developing business features.

Moving forward and Summing Up

The ecosystem of our templates will be constantly updating. Next in line are Vue Material Admin and Angular Material Admin. Additionally, we are working on integrating some of the existing UI components from React Material Admin to the Flatlogic Platform generated react app.

For the rest of our React templates, check our marketplace. If you face any difficulties setting up this or that template or admin dashboard, please feel free to leave us a message on our forumTwitter or Facebook. We will respond to your inquiry as quickly as possible!

Happy developing!

The post React Material Admin Full Update appeared first on Flatlogic Blog.Flatlogic Admin Templates banner

.NET Framework February 2022 Cumulative Update Preview

Today, we are releasing the February 2022 Cumulative Update Preview for .NET Framework.

Security

The February Security and Quality Rollup Update does not contain any new security fixes. See January 2022 Security and Quality Rollup for the latest security updates.

Quality and Reliability

This release contains the following quality and reliability improvements.

NET Libraries

Addresses an issue when Ssl negotiation can hang indefinitely when client certificates are used when TLS 1.3 is negotiated. Before the change renegotiation (PostHandshakeAuthentiction) would fail and SslStream or HttpWebRequest would observe a timeout.

Winforms

Addresses a leak of IRawElementProviderSimple objects which was introduced in .NET Framework 4.8. This is an opt-in fix, add the following compatibility switch to the app.config file in order to dispose the accessible objects:
<Runtime>
<!– AppContextSwitchOverrides values are in the form of ‘key1=true|false;key2=true|false –>
<AppContextSwitchOverrides value=”Switch.System.Windows.Forms.DisconnectUiaProvidersOnWmDestroy=true”/>
<Runtime>
Note: When the accessibility server application opts into this fix, the accessibility client will receive errors when accessing the disconnected provider. This is expected because the corresponding control window is destroyed. Previous behavior where the provider was returning information for destroyed controls was incorrect.

Getting the Update

The Cumulative Update Preview is available via Windows Update, Windows Server Update Services, and Microsoft Update Catalog.

Microsoft Update Catalog

You can get the update via the Microsoft Update Catalog. For Windows 10, NET Framework 4.8 updates are available via Windows Update, Windows Server Update Services, Microsoft Update Catalog. Updates for other versions of .NET Framework are part of the Windows 10 Monthly Cumulative Update.

**Note**: Customers that rely on Windows Update and Windows Server Update Services will automatically receive the .NET Framework version-specific updates. Advanced system administrators can also take use of the below direct Microsoft Update Catalog download links to .NET Framework-specific updates. Before applying these updates, please ensure that you carefully review the .NET Framework version applicability, to ensure that you only install updates on systems where they apply.

The following table is for Windows 10 and Windows Server 2016+ versions.

Product Version
Cumulative Update

Windows 11

.NET Framework 3.5, 4.8
Catalog
5010474

Microsoft server operating systems version 21H2

.NET Framework 3.5, 4.8
Catalog
5010475

Windows 10 21H2

.NET Framework 3.5, 4.8
Catalog
5010472

Windows 10 21H1

.NET Framework 3.5, 4.8
Catalog
5010472

Windows 10, version 20H2 and Windows Server, version 20H2

.NET Framework 3.5, 4.8
Catalog
5010472

Windows 10 1809 (October 2018 Update) and Windows Server 2019

5011267

.NET Framework 3.5, 4.7.2
Catalog
5009472

.NET Framework 3.5, 4.8
Catalog
5010473

Previous Monthly Rollups

The last few .NET Framework Monthly updates are listed below for your convenience:

.NET Framework February 2022 Security and Quality Rollup
.NET Framework January 2022 Cumulative Update Preview
.NET Framework January 2022 Security and Quality Rollup Updates

The post .NET Framework February 2022 Cumulative Update Preview appeared first on .NET Blog.Flatlogic Admin Templates banner

Announcing .NET MAUI Preview 13

The 13th preview of .NET Multi-platform App UI is now available in Visual Studio 17.2 Preview 1. In addition to quality improvements, this release includes several implementations such as Label.FormattedText as we close in on feature complete for the upcoming release.

This entire page is a single Label control, mimicking the Windows font preview!

<Label LineBreakMode=”NoWrap” LineHeight=”1.4″>
<Label.FormattedText>
<FormattedString>
<Span Text=”Font name: Default ”/>
<Span Text=”Version: 1.00 ”/>
<Span Text=”Digitally Signed, TrueType Outlines ”/>
<Span Text=”abcdefghijklmnopqrstuvwxyz “/>
<Span Text=”abcdefghijklmnopqrstuvwxyz ” TextTransform=”Uppercase”/>
<Span Text=”1234567890.:,;’+-*/= ”/>
<Span Text=”12 The quick brown fox jumps over the lazy dog. 1234567890 ” FontSize=”12″/>
<Span Text=”18 The quick brown fox jumps over the lazy dog. 1234567890 ” FontSize=”18″/>
<Span Text=”24 The quick brown fox jumps over the lazy dog. 1234567890 ” FontSize=”24″/>
<Span Text=”36 The quick brown fox jumps over the lazy dog. 1234567890 ” FontSize=”36″/>
<Span Text=”48 The quick brown fox jumps over the lazy dog. 1234567890 ” FontSize=”48″/>
<Span Text=”60 The quick brown fox jumps over the lazy dog. 1234567890 ” FontSize=”60″/>
<Span Text=”72 The quick brown fox jumps over the lazy dog. 1234567890 ” FontSize=”72″/>
</FormattedString>
</Label.FormattedText>
</Label>

Additional highlights include:

New .NET MAUI documentation for many topics from XAML fundamentals and advanced topics, to bindable and attached properties, and RelativeLayout

Documentation for building Blazor Hybrid apps with .NET MAUI, WPF, and Windows Forms.
Label.FormattedText (#3637)
ListView (#3916 #3817 #4193)
Performance – Remove MS.Extensions.Hosting (#4505)
RadioButton (#3784)
SwipeView (#3987 #4064 #4026)
WinUI Flyout (#3735)
WinUI TabbedPage (#4257)
WebView: CanGoBack, CanGoForward, Eval, GoBack, GoForward, Reload

Find more details in our release notes, and in the migration guide.

One of the key .NET alignment inspired design decisions we’ve made in .NET MAUI is to adopt the Microsoft.Extensions builder pattern for bootstrapping applications.

Bootstrapping in .NET MAUI: Focus on MauiProgram

Through the course of our previews, we have heard loud and clear that you love the startup pattern in .NET MAUI. We’ve also made adjustments along the way to improve the developer experience, polish our usage, and collaborate with other .NET app model teams to arrive at a great solution for .NET MAUI developers. In this release, we’ve made another adjustment removing Microsoft.Extensions.Hosting in favor of a faster app startup time, specifically for Android. Let’s take a closer look at how a .NET MAUI app starts up each platform, and what all you can do to configure your app.

Platform App Classes

Every platform has its own native application class where you might do platform-specific setup. On Windows this is the WinUIApplication. Each of these applications will use “MauiProgram.cs” to create your MauiApp.

public partial class App : MauiWinUIApplication
{
public App()
{
InitializeComponent();
}

protected override MauiApp CreateMauiApp() => MauiProgram.CreateMauiApp();
}

Android has MainApplication, and iOS and macOS use AppDelegate. While you can put code here to do specific things, we recommend instead doing everything in MauiProgram. A barebones implementation looks like this:

namespace WeatherTwentyOne;

public static class MauiProgram
{
public static MauiApp CreateMauiApp()
{
var builder = MauiApp.CreateBuilder();
builder
.UseMauiApp<App>();

return builder.Build();
}
}

So what kind of work can you do here in the CreateMauiApp method? This is where you will:

RegisterBlazorMauiWebView – to enable this control and related services in your app

ConfigureEffects – to register Xamarin.Forms Effects in this .NET MAUI handler architecture

ConfigureEssentials – to perform Essentials related setup. See microsoft/dotnet-podcasts for examples

ConfigureFonts – to register fonts with an alias

ConfigureImageSources – to override image sources in order to perform custom work such as filetype conversion

ConfigureMauiHandlers – set a custom handler as your implementation, or a 3rd-party option

Let’s say you want to replace the platform-specific implementation of an Entry control with the Fluent Design Entry control from the Maui.Graphics.Controls project. After including the NuGet package in your project, you can now configure controls to use an alternate handler implementation.

var builder = MauiApp.CreateBuilder();
builder
.UseMauiApp<App>()
.ConfigureMauiHandlers(handlers => {
handlers.AddHandler(typeof(Entry), typeof(Microsoft.Maui.Graphics.Controls.EntryHandler));
})

To make this even more convenient, library developers can provide custom builder extensions to do this for you. If I want all of my controls to render with Maui.Graphics.Controls for a Fluent implementation, I can use a convenient extension.

var builder = MauiApp.CreateBuilder();
builder
.UseMauiApp<App>()
.ConfigureGraphicsControls(DrawableType.Fluent)

Dependency Injection

The MauiProgram is also where you will configure your DI container. The .NET Podcast app does a clean job of demonstrating this in action with extension methods. MauiProgram.cs looks like this:

public static MauiApp CreateMauiApp()
{
var builder = MauiApp.CreateBuilder();
builder
.RegisterBlazorMauiWebView()
.UseMauiApp<App>()
.ConfigureEssentials()
.ConfigureServices()
.ConfigureViewModels()
.ConfigureFonts(fonts =>
{
fonts.AddFont(“Segoe-Ui-Bold.ttf”, “SegoeUiBold”);
fonts.AddFont(“Segoe-Ui-Regular.ttf”, “SegoeUiRegular”);
fonts.AddFont(“Segoe-Ui-Semibold.ttf”, “SegoeUiSemibold”);
fonts.AddFont(“Segoe-Ui-Semilight.ttf”, “SegoeUiSemilight”);
});

Barrel.ApplicationId = “dotnetpodcasts”;

return builder.Build();
}

Digging into ConfigureServices we see setup the BlazorWebView control, singletons, transients, scoped dependencies, and even the HttpClient implementation. View the source here.

Shell and DI – last release we featured the new constructor injection support when using Shell as your application navigation context. Until this issue is resolved, you will need to register your pages in addition to any injectables in order for the DI to succeed.

Platform Lifecycle Events

When you have need to do custom setup based on platform events, .NET MAUI provides lifecycle events right in your multi-targeted code. WinUI has a property to control if your content should extend into the title bar area or not. To access, you can do this:

builder.ConfigureLifecycleEvents(lifecycle => {
#if WINDOWS
lifecycle
.AddWindows(windows =>
windows.OnNativeMessage((app, args) => {
app.ExtendsContentIntoTitleBar = false;
}));
#endif
});

Removing Hosting and Disabling Logging

It was identified that Microsoft.Extensions.Hosting was not needed in a .NET MAUI app, and removing it would improve Android app started by approximately 13% on a blank application. As you can see from the examples above, you can still do the most useful things with Hosting removed. Hosting was overhead we didn’t need. For more details on this change, Eric Erhardt has provided a thorough write-up here.

Hand in hand with this change, we have also made the change to disable logging for release builds.

Get Started Today

.NET MAUI Preview 13 is bundled with Visual Studio 17.2 Preview 1 available today with the latest productivity improvements for .NET MAUI development. If you are using Visual Studio 2022 17.1 Preview 2 or newer, you can upgrade to 17.2 Preview 1.

If you are upgrading from an earlier version, have been using maui-check, or run into installation problems, we recommend starting from a clean slate by uninstalling all .NET 6 previews and Visual Studio 2022 previews. Please report any issues through Help > Send Feedback

Starting from scratch? Install this Visual Studio 2022 Preview (17.2 Preview 1) and confirm .NET MAUI (preview) is checked under the “Mobile Development with .NET workload”.

Ready? Open Visual Studio 2022 and create a new project. Search for and select .NET MAUI.

Preview 13 release notes are on GitHub. For additional information about getting started with .NET MAUI, refer to our documentation.

Feedback Welcome

Please let us know about your experiences using .NET MAUI to create new applications by engaging with us on GitHub at dotnet/maui.

For a look at what is coming in future .NET 6 releases, visit our product roadmap, and for a status of feature completeness visit our status wiki.

The post Announcing .NET MAUI Preview 13 appeared first on .NET Blog.

Flatlogic Admin Templates banner

.NET Framework January 2022 Cumulative Update Preview

Today, we are releasing the January 2022 Cumulative Update Preview for .NET Framework.

Quality and Reliability

This release contains the following quality and reliability improvements.

CLR1

Addresses rare crashes and hangs that can appear in cases where a GC occurs while another thread is in the middle of certain special paths used to invoke shared-generic code from non-shared-generic contexts.

WPF2

Addresses a hang when scrolling a list control where both these conditions are

UseLayoutRounding is enabled, and
The item margin is not a multiple of the rounding quantum. (The quantum is a function of the DPI scaling in effect.)

Addresses an exception “Height must be non-negative” that can occur when adding items or groups to the collection displayed by an ItemsControl.
Addresses an issue where a shared ContextMenu stops displaying after it fails to display once because its owner was removed from the visual tree.

1 Common Language Runtime (CLR)
2 Windows Presentation Foundation (WPF)

Getting the Update

The Cumulative Update Preview is available via Windows Update, Windows Server Update Services, and Microsoft Update Catalog.

Microsoft Update Catalog

You can get the update via the Microsoft Update Catalog. For Windows 10, NET Framework 4.8 updates are available via Windows Update, Windows Server Update Services, Microsoft Update Catalog. Updates for other versions of .NET Framework are part of the Windows 10 Monthly Cumulative Update.

**Note**: Customers that rely on Windows Update and Windows Server Update Services will automatically receive the .NET Framework version-specific updates. Advanced system administrators can also take use of the below direct Microsoft Update Catalog download links to .NET Framework-specific updates. Before applying these updates, please ensure that you carefully review the .NET Framework version applicability, to ensure that you only install updates on systems where they apply.

The following table is for Windows 10 and Windows Server 2016+ versions.

Product Version
Cumulative Update

Windows 11

.NET Framework 3.5, 4.8
Catalog
5009469

Microsoft server operating systems version 21H2

.NET Framework 3.5, 4.8
Catalog
5009470

Windows 10, version 21H2

.NET Framework 3.5, 4.8
Catalog
5009467

Windows 10, version 21H1

.NET Framework 3.5, 4.8
Catalog
5009467

Windows 10, version 20H2 and Windows Server, version 20H2

.NET Framework 3.5, 4.8
Catalog
5009467

Windows 10 1809 (October 2018 Update) and Windows Server 2019

5009823

.NET Framework 3.5, 4.7.2
Catalog
5009472

.NET Framework 3.5, 4.8
Catalog
5009468

 

Previous Monthly Rollups

The last few .NET Framework Monthly updates are listed below for your convenience:

.NET Framework January 2021 Cumulative Update
.NET Framework November 2021 Cumulative Update
.NET Framework October 2021 Security and Quality Rollup

The post .NET Framework January 2022 Cumulative Update Preview appeared first on .NET Blog.

Announcing full support for ARM CPUs in Seq 2021.4

Seq 2021.4 has shipped! 🎉 Find downloads and container information at datalust.co/download.

We’re committed to making Seq a joy to use wherever you develop. Since Apple’s switch to Apple Silicon in M1 MacBook Pros, for many of us this means working on the ARM architecture, alongside the more typical AMD and Intel x64 chips.

Seq now officially supports 64-bit ARM CPUs, including those found in Apple laptops, AWS Graviton, and yes — Seq will happily run on the Raspberry Pi 4.

Here’s the obligatory screenshot of Seq running locally on a brand new M1 developer Mac 😎:

Developers working on M1 MacBook Pros can now run Seq locally.

For production workloads, it’s now possible to provision ARM machines in EC2:

Graviton promises better price/performance than x64 in AWS.

To run Seq on these platforms, you’ll need Docker. The datalust/seq Docker image is multi-architecture, so when you pull it from Docker Hub, you’ll get an ARM or x64 build depending the architecture of your local machine.

Important note: preview ARM support was included in several of the 2021.3 release tags. The official release uses a different format for metadata storage, so if you’ve been using one of these on your ARM system, you’ll need to upgrade to 2021.4 so that the existing data can be converted, before upgrading to any future Seq versions.

Seq on the ARM architecture

The “application” side of Seq is implemented in C# on .NET, so Seq on ARM uses the ARM builds of .NET 6. Now that we’ve been through a platform port ourselves, we have renewed appreciation for the job that the .NET team and community have done to make ARM feel like a first-class platform for running .NET code.

The “data” side of Seq is predominantly Rust. ARM has been supported by the Rust compiler for some time, but only became a Tier 1 target in December 2020. The experience of porting the Rust side of our codebase to ARM has also been smooth and trouble-free. This is especially pleasing because it demonstrated to us that Rust’s disciplined approach to concurrency has kept us — as far as we know — clear of the issues that we’d otherwise expect to see when moving highly-concurrent native code between platforms with different memory models. Yes, we’re still very happy with our decision to build Seq’s native event store in Rust.

Aside from flicking the switches on our .NET SDK and Rust compiler, we made changes in a few other parts of our stack.

Native metadata store

Seq can use a variety of storage back-ends for configuration data like users, signals, dashboards, alerts, and so-on. By default, it uses a local embedded database that stores data in Documents/ under the Seq storage directory.

On ARM platforms, Seq now uses a new embedded database implementation that’s integrated into the same Rust codebase that powers the Seq event store. We chose this path because we want to make Seq more predictable and forgiving on weaker filesystems than the existing LMDB-backed solution will allow (see the notes below about Azure Container Instances, for example).

Other long-term goals for this are to reduce Seq’s dependencies on third-party storage code, and to make multi-node Seq deployments possible without an external database. We expect that we’ll roll this out to Windows and x64 Linux platforms in a near future release.

Porting squirrel-json to Neon

Seq uses a sparse, vectorized JSON deserializer that enables some interesting scenarios in our internal storage architecture. We built squirrel-json using the AVX2 instruction set, which is specific to x64 CPUs.

To run Seq efficiently on ARM, we ported squirrel-json to the Arm Neon instruction set. We were pleased to find that performance is on par with the original version.

Multi-targeting Seq Apps

Finally, because a number of the core Seq Apps we ship are written in native code, we’ve ported and compiled native ARM binaries for Seq.Input.Gelf, Seq.Input.Syslog, and Seq.App.JsonArchive. Hopefully, with these three ported, you won’t encounter too many native apps without ARM binaries.

Apps that target our .NET Seq.Apps SDK can run on ARM unmodified.

What else is new in 2021.4?

We’ve deliberately (and necessarily) kept 2021.4 focused tightly on ARM support, but we’ve still made room for a couple of important improvements and fixes.

Target URLs within the Seq web interface are now preserved through the login process for all authentication types
Signal bar highlighting is disabled on touch devices, improving user experience on iPad and other tablets
Seq Apps can now annotate settings with Syntax to indicate preference for a fixed-width font; as more apps are updated to use this, we plan to extend the Seq UI to provide highlighting and editing assistance appropriately
We’ve made some progress on simplifying deployment to Azure Container Instances by making the new native metastore available on all platforms through the SEQ_FEATURES_ENABLED=nativemetastore environment variable (please check in with us before enabling this feature flag for mission-critical/high-load environments 🙂)

As always, there’s a milestone in the Seq issue tracker with all of the nitty-gritty details.

Upgrading

Seq 2021.4 is a highly-compatible in-place update. Upgrading existing 202x Seq releases is as simple as clicking through the installer on Windows, or pulling the latest datalust/seq image under Docker. Check out the upgrade guide if you’re coming from Seq 5.x or earlier versions.

Download the Windows installer from the Seq downloads page. The Docker image is published to the datalust/seq repository on Docker Hub.

If you need more information, or some help to roll out Seq 2021.4 in your organization, supp[email protected] is ready to help, so please just drop us a line!

Announcing the Plan for EF7

Today we are excited to share with you the plan for Entity Framework Core 7. This plan brings together input from many stakeholders and outlines where and how we intend to invest in Entity Framework Core 7 (EF Core 7). For brevity, EF Core 7.0 is also referred to as just EF7.

The plan is being tracked through GitHub dotnet/efcore repo issue #26994 and any updates will be posted there.

IMPORTANT This plan is not a commitment; it will evolve as we continue to learn throughout the release. Some things not currently planned for EF7 may get pulled in. Some things currently planned for EF7 may get punted out.

To review the plans for other products, areas, and .NET 7 overall, visit and read the ThemesOf.Net.

General information

EF Core 7 is the next release after EF Core 6 and is currently scheduled for release in November 2022 at the same time as .NET 7. There are no plans for an EF Core 6.1 release.

EF7 will align with the .NET support policy and will therefore will not be a long-term support (LTS) release.

EF7 currently targets .NET 6. This may be updated to .NET 7 as we near the release. EF7 does not target any .NET Standard version; for more information see the future of .NET Standard. EF7 will not run on .NET Framework.

Themes

The large investments in EF7 will fall mainly under the following themes.

Highly requested features

As always, a major input into the planning process comes from votes () for features on GitHub.

JSON columns: Save and query into JSON-based documents stored in relational database columns.

Bulk updates: Efficient, predicate-based updates for many database rows without loading data into memory.

Lifecycle hooks: Allow applications to react when interesting things happen in EF code.

Table-per-concrete-type (TPC) mapping: Map entities in a hierarchy to separate tables without taking the performance hit of TPT mapping.

Map CUD operations to stored procedures: Use stored procedures to manage data modifications.

Value objects: Applications can use DDD-style value objects in EF models.

Support value generation when using value converters: DDD-style encapsulated key types can make full use of automatically generated key values.

Raw SQL queries for unmapped types: Applications can execute more types of raw SQL query without dropping down to ADO.NET or using third-party libraries.

Database scaffolding templates: The code generated by dotnet ef database scaffold can be fully customized.

.NET platforms and ecosystem

Much of the work planned for EF7 involves improving the data access experience for .NET across different platforms and domains. This involves work in EF Core where needed, but also work in other areas to ensure a great experience across .NET technologies.

Distributed transactions: .NET Framework applications using distributed transactions can be ported to .NET 7 on Windows.

EF Core tooling: Ensure dotnet ef commands are easy to use and work with modern platforms and technologies.

EF Core and graphical user interfaces: Make it easy to build data-bound graphical applications with EF Core.

SqlServer.Core (Woodstar): Fast, fully managed access to SQL Server and Azure SQL for modern .NET applications.

Azure Cosmos DB provider: Continue to make EF Core the easiest and most productive way to work with Azure Cosmos DB.

Migrations experience: Make it easy to get started with migrations and later use them effectively in CI/CD pipelines.

Trimming: Smaller applications that can be efficiently AOT compiled.

Evolve System.Linq.Expression: Use modern C# language features in LINQ queries.

Translate new LINQ operators: Use new LINQ operators when translating LINQ queries to SQL.

Open telemetry for ADO.NET providers: Cross-platform, industry-standard telemetry that can be monitored in your tool of choice.

Enhancements to System.Data: Better low-level data access to benefit all higher-level code.

Research data access for cloud-native: Future evolution of .NET data access that supports modern approaches such as microservices and cloud native.

Clear path forward from EF6

EF Core has always supported many scenarios not covered by the legacy EF6 stack, as well as being generally much higher performing. However, EF6 has likewise supported scenarios not covered by EF Core. EF7 will add support for many of these scenarios, allowing more applications to port from legacy EF6 to EF7. At the same time, we are planning a comprehensive porting guide for applications moving from legacy EF6 to EF Core.

Performance

Great performance is a fundamental tenet of EF Core, lower-level data access, and indeed all of .NET. Every release includes significant work on improving performance.

Performance of database inserts and updates: High performance database inserts and updates from EF Core

TechEmpower composite score: High performing low-level data updates for all .NET applications.

Find out more and give feedback

This post is a brief summary of the full EF7 plan. Please see the full plan for more information.

Your feedback on planning is important. The best way to indicate the importance of an issue is to vote () for that issue on GitHub. This data will then feed into the planning process for the next release.

In addition, please comment on the plan issue (#26994) if you believe we are missing something that is critical for EF7, or are focusing on the wrong areas.

The post Announcing the Plan for EF7 appeared first on .NET Blog.