ネットは20年を祝い、私たちに贈り物をもたらします🎁: 新しい.純7機能を明らかに


誰より良い人の20周年を発表する.ビルゲイツよりネット?さて、それはどのようにして2002 VSLive!
すごい!しかし、あなたが知らなかったならば、...に従ってStack Overflow survey , 過去3年間の開発者による最も愛されたフレームワークされています.
はい.NET Frameworkは2002年にその創設以来20年を祝いました、そして、ちょうど2、3日前、マイクロソフトはリリースしましたnew features of .NET 7 , これは、今年11月に正式にリリースされる予定です.これらの機能が何であるかを見て、それらを分析しましょう!

改良Regexソース発生器


新しいRegexのソースジェネレータは、最大5 xの時間は、関連するパフォーマンスの利点のいずれかを犠牲にすることなく、私たちのコンパイルされたエンジンからパターンを最適化に費やされるまでオフに剃ることができることを意味します.さらに、それはAの中で動くのでpartial クラスでは、実行時にユーザーがパターンを知っている場合のコンパイル時間のオーバヘッドはありません.この機能を使用すると、コンパイル時にあなたのパターンを知ることができます、このジェネレータは、伝統的にコンパイラベースのアプローチの代わりに推奨されます.
あなたがする必要があるのは、属性との部分的な宣言をセットアップすることですRegexGenerator これは、既にコンパイル済みの正規表現オブジェクト(他のすべての機能を有効にしたもの)を返すメソッドを指します.私たちのジェネレータは、そのメソッドを作成し、必要に応じて、元の文字列またはオプションで渡された変更に応じて必要に応じてそれを更新します.
の比較を見てみましょうMicrosoft example :
以前
public class Foo
{
  public Regex regex = new Regex(@"abc|def", RegexOptions.IgnoreCase);

  public bool Bar(string input)
  {
    bool isMatch = regex.IsMatch(input);
    // ..
  }
}
その後
public partial class Foo  // <-- Make the class a partial class
{
   [RegexGenerator(@"abc|def", RegexOptions.IgnoreCase)] // <-- Add the RegexGenerator attribute and pass in your pattern and options

   public static partial Regex MyRegex(); //  <-- Declare the partial method, which will be implemented by the source generator
  public bool Bar(string input)
  {
    bool isMatch = MyRegex().IsMatch(input); // <-- Use the generated engine by invoking the partial method.
    // ..
  }
}

SDKの改良


仕事をする人たちのために.ネットフレームワークdotnet new より簡単なタスクになります.改善された直観性とタブ完成の増加した速度のような主要なアップデートで、それはこの変化に関して何か否定的なものを見つけるのが難しいでしょう.
もっと深く行きたいならばoriginal example from Microsoft:
 dotnet new --help
Description:
  Template Instantiation Commands for .NET CLI.

Usage:
  dotnet new [<template-short-name> [<template-args>...]] [options]
  dotnet new [command] [options]

Arguments:
  <template-short-name>  A short name of the template to create.
  <template-args>        Template specific options to use.

Options:
  -?, -h, --help  Show command line help.

Commands:
  install <package>       Installs a template package.
  uninstall <package>     Uninstalls a template package.
  update                  Checks the currently installed template packages for update, and install the updates.
  search <template-name>  Searches for the templates on NuGet.org.
  list <template-name>    Lists templates containing the specified template name. If no name is specified, lists all templates.

新しいコマンド名


コマンドラインは一般的に変更されました-特に、この出力で示されるすべてのコマンドは、もはや以下を含みません-- 接頭辞として現在.これは、ユーザーがコマンドラインのために構築されたアプリケーションのサブコマンドから期待するものと整列するために行われました.
古いコマンドのバージョン(--install , スクリプトを中断した場合にはまだ利用できますが、ある日、これらのコマンドに対する推奨警告があることを願っています.

タブキー補完


長い間、DotNetのコマンドラインインターフェイスは、シェルシェルのPowerShell、bash、zsh、および魚のタブ補完をサポートしています.コマンド自身が与えられたときに表示するものを決定することができます.
さあ.ネット7new コマンドには非常に多くの機能があります.
 dotnet new angular
angular              grpc                 razor                viewstart            worker               -h
blazorserver         mstest               razorclasslib
web                  wpf                  /?
blazorwasm           mvc                  razorcomponent       webapi               wpfcustomcontrollib  /h
classlib             nugetconfig          react                webapp               wpflib               install
console              nunit                reactredux           webconfig            wpfusercontrollib    list
editorconfig         nunit-test           sln                  winforms             xunit                search
gitignore            page                 tool-manifest        winformscontrollib   --help               uninstall
globaljson           proto                viewimports          winformslib          -?                   update
あなたがそれを有効にする方法を知って興味があるならば、私はあなたをチェックすることを勧めますMicrosoft’s guide . そして同様に、この機能のすべての可能性を知りたい場合は、再度相談することをお勧めしますoriginal source .

ダイナミックなPGO改善


マイクロソフトは最近、プログラムの最適化のための新しいブレークスルーを導入しました.ダイナミックなPGOと呼ばれて、我々がすでに知っている静的PGOから若干の重要な変化をするように設計されています.ここで静的なPGOは、開発者が訓練とは別に、特別なツールを使用する必要があります、ダイナミックなPGOはそのいずれかを必要としませんすべてを行う必要がある場合は、最適化に興味を持っているアプリケーションを実行し、マイクロソフトのデータを収集!
さて、Andy Ayers インGitHub , 以下を追加します.
我々が決定することができるように、ローカルモーフによってされるレファレンスカウントを広げてください
シングルDEFのシングルユースを使用します.
しようとするローカルモーフの直後に実行するフェーズを追加
フォワードシングルDEFシングルローカルディフェンスを使用しているときに使用する
隣接文.
他の場所で発見された問題を修正または回避する
  • gtFoldExprCompare は"同一"の揮発性部分木を折り畳むかもしれません.
  • fgGetStubAddrArg 複雑なツリーを処理できません.
  • いくつかのSIMD/HW操作はstructハンドルを失うことがあります.
  • いくつかの呼び出しはstruct local argsを扱うことができません.
  • あなたは、チェックすることができますoriginal pull 詳細は
    結論
    これらの機能は、マイクロソフトによって明るみに出てきた最後のものです、そして、我々は彼らが我々に示すどんな機能を見る必要があります.
    我々がすべて見ることができる限り(そして、マイクロソフトが我々を見る限り)、すべては計画に従って進んでいます、そして、我々は公式発表を期待することができます.本年7月末(7月より).
    だから今のところ、我々はマイクロソフトの発表やニュースを見ている.ネット7!