Hi, The PHP development team announces the immediate availability of PHP 7.2.26. This is a security release which also contains several minor bug fixes. All PHP 7.2 users are encouraged to upgrade to this version. For source downloads of PHP 7.2.26 please visit our downloads page. Windows binaries can be found on the PHP for Windows site. The list of changes is recorded in the ChangeLog. Release Announcement: http://php.net/releases/7_2_26.php Downloads: http://www.php.net/downloads Windows downloads: http://windows.php.net/download Changelog: http://www.php.net/ChangeLog-7.php#7.2.26 Many thanks to all the contributors and supporters! Sara Golemon, Remi Collet php-7.2.26.tar.gz SHA256 hash: e97d0636478bb519cd955a0c17b7970cf173063a840a83fc4afb75c22bc1bf08 PGP signature: -----BEGIN PGP SIGNATURE----- iQIcBAABAgAGBQJd+MryAAoJENyf+NPuWvJ/X/UP/0Mbsh2Ydb7rBITarx+x38OU WUHgP9NZ3UKzVw5H/fRUPeeasm6iWbIGHUjNbJzAogzL1gPSQ+LdZoEvX8tgVXk6 8wqtqn3A3eZALGy6hhl3jkV0WdcRhFCRTc6hd4Dx97nU9GMB/7EgW7PTDCfTrgA6 EWCJ0BUP21M+WlKjC0TCKQRnFg8QAfmzBPGbE6uDZGDxO5711Fsm/mhY3C2lh4SF NwxRSXJRUYq3gsp1J2+axtw0gwLM73x3yJ6gRoXf1BCs7vHHIB5ocmuq6bnw6XOS 5PoJM8yvNxUXuYDtglCOuYZF7gHrjgYKhV5oSzi0djTdNadnl8GIwrAC6+mbHP+Y g4yCcAvXQgB68NpLxGhrX0rmnsZKEEmq0YqESxeLUeskBMtqnxk6qy0MiP3+rEVV PyybTmgsuqBf7znqUb3jGb4K3GGz50xC78MBXj6yN1AMwyGRLwqtLtkQFpT9PHgg HWrFYtcGhajW858x9s9ESeVcCm3RLGUopSbWyPdsi96nepwWg1fjE9/S8j59p/WO CiDGkuWxNUgdCJ11V0XSH1nSqHmOcoKXeFVN/2J7kXa3RO+Tn2rRo7P14nJ+YV5g zVm8PjpvNn20+wCGSkxRr589xjH9Zn21HMAjHTrCIjTFZuPzPZtme9hrPAAcmU94 dJoWl0LPNtET9L3mpcDc =wmiC -----END PGP SIGNATURE----- php-7.2.26.tar.bz2 SHA256 hash: f36d86eecf57ff919d6f67b064e1f41993f62e3991ea4796038d8d99c74e847b PGP signature: -----BEGIN PGP SIGNATURE----- iQIcBAABAgAGBQJd+Mr0AAoJENyf+NPuWvJ/j7QQAJFyX8U6IhwT0/SU7/i9stJL kCkXrUkhtTHMqAtIJVVQ0QE1vn/yFkP7b6Q8OdPqpPXLfPUM6xLNkM/PVEQEmHzt YHrXc9mHrLpMrwVn/Q2LqQmnuMWBh5E7wAsEUSGBUfoVBzeJLc/oslKD3ob85tsa chO8Ms9sJ95vFClv+txc+bWIKr603n1b2nAxUGWUqIp+QlSapp4UlbH+4ctqg1D6 rS/k9CpVJ1FZU/UkLcVvZG4YzSln0fpGxh1kXNjV/eB3UNf24sxPnMPn1jnCvddF bUJ4CURw+8nT8+tNYpokry6EPJhWs1waqpmnC+C9sxWAW3IRvp147eww3NKhs7VL lsHSJ3rF3k/OcYfcM8HfPAIWeplcanF/tONnKlvN6CmB6osnCvVNphi3FekDRCAe /4nVR3EmPqdyrqxDAS6W/GmpsUUGCeph3lLL0YQWslfJpntkdzBtBSFIKcCyoHcF BK+rJPrqfTWDGYXj2mlTKYB72E+fSOP2k7nOUfwfAyezXl/RVuyflt9GrQTR9bS8 RwhTt5GNUHZBdqCzMiSHPa+jjxjDPksqqq0V2z0gbj9k/CnauxbcYRgVhuxdie7C iMLU8tXJDbfaxDAuUEhGULae7RzYw41Q0Hvwm3wCvn9GAh6aPqAm1yHr9pT8o/8L 6aRQXhE1jIvRJp6wHpqT =oIA4 -----END PGP SIGNATURE----- php-7.2.26.tar.xz SHA256 hash: 1dd3bc875e105f5c9d21fb4dc240670bd2c22037820ff03890f5ab883c88b78d PGP signature: -----BEGIN PGP SIGNATURE----- iQIcBAABAgAGBQJd+Mr3AAoJENyf+NPuWvJ/bykP/A/bT/j2zz6eHi95lCqQy3sZ r3zR8hJ/dUn9PAPGRvLqhxAXFvHjofdOi8lEwk0aPm9uxEVAnp3Xw4ao9xS4fvtK 81ZEMEELMlyZYHve2xauCZ0jPkX5/siu5sC91vnzM3i/QOf2V1sJ9RhETiKWPhMq dWPUTTdQfzoYuP8vf+uhpHo+Fvend0zq4AEoyA6FUth2tEkHuIcBUiTAbetVXkx+ j0nNe9h2Xp/RGAnsw7AOk+APmyh/BSKrNaIys9FyscNL47MKQkGyp08mGFMtac4p zBQ4ZVfmM5E5XTfSkoz3qKk0Q87GLmfIm4e7LG83mXRbp9ju993kt7cqJLM3Ve3k GdJ+swY9uHajmQPhw32Q0wUni8GF3o1D2U3k7IHLrE2n2sn+Ywxu8l9zEMhmbG/E nPiISqSi+xSQoE3KT+TwVtAmtnvWHWaKztczRAro1eF77hqgUKNejXn3G9ImzWpl XuLyXi1LIVN9pmHliN7o86k0ztTAbLHvBU/PmMbojKxShEz1BP+QuS4HAe4d2cvp PwQ3Jew9X2ZNgNxPQpprIL/8IJyGwPOowkpQTOvngmmxHgFQD01u0MpL95VTWtwA D3D/WR5wqBqIaEhxFSX2SgpBB4c69btcoQKiUXLf+7aTCKE5u1D6OeIBHYDReBGG YtPALEns8VQdia2fkgyR =nL/Y -----END PGP SIGNATURE-----
Category: Uncategorized
PHP 7.3.13 Released
The PHP development team announces the immediate availability of PHP 7.3.13. This is a security release which also contains several bug fixes. All PHP 7.3 users are encouraged to upgrade to this version. For source downloads of PHP 7.3.13 please visit our downloads page. Windows binaries can be found on the PHP for Windows site. The list of changes is recorded in the ChangeLog. Release Announcement: <https://php.net/releases/7_3_13.php> Downloads: <https://www.php.net/downloads> Windows downloads: <https://windows.php.net/download> Changelog: <https://www.php.net/ChangeLog-7.php#7.3.13> Many thanks to all the contributors and supporters! Stanislav Malyshev, Christoph M. Becker php-7.3.13.tar.bz2 SHA256 hash: 5c7b89062814f3c3953d1518f63ed463fd452929e3a37110af4170c5d23267bc PGP signature: -----BEGIN PGP SIGNATURE----- iQJABAABCAAqFiEEy69p8XOg/qS1N/Rw1myVkxGLzLYFAl34r1EMHGNtYkBwaHAu bmV0AAoJENZslZMRi8y2HyQQAIpIwy+YRJR8Zjm7WkoALqLDKt/s88okVOVRx0Gy 9es0uyK2T8WdVr6FJEI32rc1Mq0d9BZ4qvu6kpVn9SmsoEPTLj6Dl2PKDmaKpFDe 492NQEkzPRLu9iBLFjqludbKKBEeU1A0q2mbBikOzvE0VRk/QvMXjxSxcIg4+kqe PY92QnyYe6PZJHnWBSsCrJ/bRWXuc3D9EQQKA7RCz3CYDSkHuMhK6j/gmOdToJyZ vV/MhtMsLoQzMgnZZ4Bz+masa+pEK49Yi7sOCulB8olkRdcx3metykWec9P3ducK CtNg3Cq134cah1SZDz5mvZII2UaNsFl70RJItFyriQr25TTRc3KipLLu2RNvWaD/ n6QexTC27ti66UlKIrkfSnfE/h5diugGHk1Fxo080Wvb7LUM8Bj+u518yeOpwoE2 ODJSCGejPWVLsgzOUEnk3s5CUOqjqFB+JyEmR8ui7Vjzl/Z3Thnr4EDxDXnyZwpa q+rgTNZpgU7bHF+8T/OwvyQ3/KXUJAYksyWdigXGxUBy6eXGkOKyS2AXYVmIz6dv N7fiwVV3vb8vD3FtMQBfekDMJhoC4ktVTK7IVNdX+d1SG5Th/3hDL6ur5Vg5kbvs wjoUHM738G4a5h0X9fqVaJMN7FGQcV6B2JZq5H6+FhXmVdYjVX/UqQMYuX+Ff61F PEMs =QQ5A -----END PGP SIGNATURE----- php-7.3.13.tar.gz SHA256 hash: 9cf835416a3471d7e6615e9288e76813d55ffaf60e0aa9ce74884a7c228cb6dd PGP signature: -----BEGIN PGP SIGNATURE----- iQJABAABCAAqFiEEy69p8XOg/qS1N/Rw1myVkxGLzLYFAl34r1cMHGNtYkBwaHAu bmV0AAoJENZslZMRi8y2IR4P/2wWxgle+rMXlTyab4RaP4i8/j7YUEUj9+k+YQ5W GZi7wpvw4tJsU6qqwLhidGJ5j7rS6IuGFekVOa8SN6QYXsUqJU8RJgiBxuIHhDcv fmJMaFfwGcNHdM6CTZWxmqLalx7zXZ8a0m8PUFvXSYewfNGFrcveFgcNNgRWuQDo NqF2lvmCS5sIkFBAPsyxlw9boYrUTz6Xagu3md3YhpWcLYmAKQ3EFeB9RgSeyMJj /zZpzSV6R+745MKlvsDpytc16RMy/YTzSkpafU3lIVC/cn5oKmhCZXWIlXXif/Hh MAuaJM+3UijYHt+vkqYwagUH0CHA7l7VYiDRwKEd8UmlakRLJiJBedrOb/d0Z4q+ Dx39kXHaGGCnWROiH89vnCPFCGsr44nS8Dsh1HxNMEl+JOVYmaAwE/TVpQ0kNSXH 12Bea0wTdeCyQvoS7MuZaTwZg/0r9OLg23oTEq/eMgC/Je8Q0ppgdQaIspCLlvdn aXJ9rJvNGyzX7XqUetT4HmSCDUVWbpKzCCEGEsjO4Jg6yYC9WHxaQYutQ0nvNZDz 1FUzb5yX6uWzt0Vo8vSYcAO7tbSZ/rKXYlQILdHzTZZdxkbGo6wmY5T5o7ZTYtPB bHCOhWggK+3RZdJMD1kSoK/lW0sxa/rpq29T3un754F3kK+5IEGjTfAJHOsMSZC7 f4kX =lm5I -----END PGP SIGNATURE----- php-7.3.13.tar.xz SHA256 hash: 57ac55fe442d2da650abeb9e6fa161bd3a98ba6528c029f076f8bba43dd5c228 PGP signature: -----BEGIN PGP SIGNATURE----- iQJABAABCAAqFiEEy69p8XOg/qS1N/Rw1myVkxGLzLYFAl34r1cMHGNtYkBwaHAu bmV0AAoJENZslZMRi8y28IsP/RUXrT3WSq8nZ3A/tNDAGPDcj+owAqFc8bruuh3R 2cEN94QYgjeHsZpz/o2uyIrPGopwZtR2l3fF4ciw8PppK79j5FxP6x8vrDemzLBi TRlBB1d+/bpKVVXxGXgNK0PvzmJk5WevOCMVt8Pn3WpoSSIAgaanLYFV9j37QEB4 JfVyeL5M9qe/4cOrVc3POz/mxwnqBMeXs0muazu3DmjmV73Z6I1njsvSNQyH4xZ7 3AgRISEXCEiTlTHsgcofPsEMUQBbU4w7Wa5aV5nqD6trMBUfDvl7tK4IgE41LZpm DBHcAKoWmSCX6AcslQXFT3xqlM+I26ZRykWUgt8IpO8DVq0iOxtPhZKpWDU4yjWs 8mBJKQS1a6z7fwoNKggFWt1tGCttuAYKbA0HsTBP5hR4PQhP3IpbmYEfKYDGigSS IuobQeF/uiCjUrRCtOWUBrzp4DQsIoerv5r8fL55Pq3DeMrLE+rGl5En9Ger6n8P 9FW9ktIqWD6S9KrdWAvnKtL9oS9mKEnsYT03PNZEMIhIpEz9Qq1zmP0/QpclKZ+g CoNcg1gCIaYq0RF76bHHIFOFa8gIWyyocDIvGqgdvC64Oop0lLMwzLgDDqAD0Rru rBonIIL2MyUQJ3KuUBFMUNg9/wuPzyM1VduTgoC+QLG0avYNwjXSe2dQGRWWvOep oWMg =C8yE -----END PGP SIGNATURE-----
PHP 7.4.0 Released!
The PHP development team announces the immediate availability of PHP 7.4.0. This release marks the fourth feature update to the PHP 7 series. PHP 7.4.0 comes with numerous improvements and new features such as: - Typed Properties - Arrow Functions - Limited Return Type Covariance and Argument Type Contravariance - Unpacking Inside Arrays - Numeric Literal Separator - Weak References - Allow Exceptions from __toString() - Opcache Preloading There are also several deprecations, and some extensions have been removed from the core distribution. For source downloads of PHP 7.4.0 please visit our downloads page. Windows binaries can be found on the PHP for Windows site. The list of changes is recorded in the ChangeLog. A migration guide is available in the PHP Manual. Please consult it for the detailed list of new features and backward incompatible changes. Release Announcement: <http://php.net/releases/7_4_0.php> Downloads: <http://www.php.net/downloads> Windows downloads: <http://windows.php.net/download> Changelog: <http://www.php.net/ChangeLog-7.php#7.4.0> Migration guide: <http://php.net/manual/migration74.php> Many thanks to all the contributors and supporters! Derick Rethans and Peter Kokot P.S. Below is the verification information for the downloads, which is also available on <https://gist.github.com/derickr/754720a595d560c26be43375e81bee6b>. php-7.4.0.tar.gz SHA256 hash: 004a1a8176176ee1b5c112e73d705977507803f425f9e48cb4a84f42b22abf22 PGP signature: -----BEGIN PGP SIGNATURE----- iQIzBAABCAAdFiEEWlKIB4H3VWCL+BX8kQ3rRvU+oxIFAl3djwQACgkQkQ3rRvU+ oxL2/w/8DXnFVQlFYU9Tl8x8z5mk/JS0dRwBod4wzARrOsUyrCkkmx8MSWTTqI5E 15+JsxcQgSGMKSnN9DGXZj3pts+eAb1Pas7ToodHG/bjHwrRcxmnEVNK6XhHRVpt zXOtiL+r5QLkzIlBFg10Jn8ZpzOODwcKWQccW4fktfRCENCJrMCYu0yzOH81SEHF k85by9uu4DQChrWm9mD42UuU8lyUZVnqtEaUfW8TV/gpBkgMeL5QqTKAGL+7ug+u anEb3m0OZsawcSzwgjyqrD/LmM2Vl76Ue8RV1Iw5Y1NdHAxczvmu+FVTq5TnlFKy xZZnz4BnJueZrq2ZOEUGqHGuLwDGMOllVHOkTL/4rOka7WBRYbpHGrPuvcKedXRw ZO3K2iabtgwrctMQIX8a49cjehhvVO4C2IlSqmFODFwQyEXYV5BVsrIPbVU+U1IO C26J4ZLHJq6B4VOjLhUKRFgZ5faYtwzBtWiPAahApKMVEf6SLsZ+f+Y0R60pePr3 BGNKJHHjlLBMLGNNCkmtJ0ZK1NpGa9CXLmp0viOeZzfTkdDf230qv3lpym7GIos6 lfzLxm5I2d77NLtN8pKSKfXpoEpulPaZSeBa64qg6NAJ/aV+QIqn2q8iEtz9wlKg hRrFhiXvMS2ZIS4mClinknUCWJXUJIcx9t/8xDnvnqKLOKaria4= =fNG/ -----END PGP SIGNATURE----- php-7.4.0.tar.bz2 SHA256 hash: bf206be96a39e643180013df39ddcd0493966692a2422c4b7d3355b6a15a01c0 PGP signature: -----BEGIN PGP SIGNATURE----- iQIzBAABCAAdFiEEWlKIB4H3VWCL+BX8kQ3rRvU+oxIFAl3djwgACgkQkQ3rRvU+ oxKuJRAAwDwybpwy44Re7YM5Cjn+3h14ocu+uSD2T+pALQQpN2sI6l333ZN3EILe oI63N0+0KPb+tzk2d+9XRdwHdcLc2m64O87R3ZVvSleebexwkfOOLCwqjxPQWUGU +TbFTPjdh52SbxF/Qd4Z/Hc03pWMcmjE+6usrLGdazoaqVgXH0IPvps8kVimvGia KPFQgh6DCsG3GlWzaASiCszMX6KusbyiUaP1N63DBof0EezOgjlwFKSJJ7PMzWtN xp25LSSVGe+HnH3BSA/wik8n7VuY3y+4rvsmMekvGzJ+GXbmlUSVWP3fl1WUNVsG DtumDpxbGrQvKsT5Y+a7TCBi+uIcIc6+jfTwAjR4I0/TWiGo/ArPumOuvsZYzse1 EO6IVC2IojjBAulNCEVtKnyuqZ1/bWZjhtRYeVWTUt1Lonfl23jSm/uF8enPMMh6 omZwFoIq9liFsLBzgBUKgyu8Sl1S/RHQf43WT16HUC8VEghEJa+1EMkOPVN+x1B8 aNDOjhxOANzDSrGTxEOVfOMErZmlo5pq3b97S+/J9SsBEiNaMz1bMgif/WAKz7QV 3qeeZwj1/tSzatoThU/Er+MI7b+nfFI2y+Zs53IgkqO+msgNX4gG2nELd9wEQnd1 3ivDp0IuPsOiZgV4mu/oGPQPDwBX8KcGt5G+X/mlFANob+4GFbc= =A+7X -----END PGP SIGNATURE----- php-7.4.0.tar.xz SHA256 hash: 9bb751b20e5d6cc1ea9b1ebf23ef2d5f07f99b2d9cc417bf1d70c04f8b20ec42 PGP signature: -----BEGIN PGP SIGNATURE----- iQIzBAABCAAdFiEEWlKIB4H3VWCL+BX8kQ3rRvU+oxIFAl3djwkACgkQkQ3rRvU+ oxLiFRAAlAFfGqQhMjh5WuC/2cV4gtM6ykmK/jEkpHSuVhRLZiB7kl+bVfXhIxQk HHzNmBSaLqc/ZfnxXVDoX0GhcLoQVYG/wQTYq5L0RfTRLhwJHBbXAwsIk2h9HIyb gx2cMCCQWjoo8I32XcxUuJjUrV/eGaR1bMJU3zfKJI5PML6/p+XesGnLlKjYscG3 OGQesCiMr0zHhxNlhJyVXcS7lHlGzFdu5TPPHdXuok6LUDhpuTguewv4ovressCF KijErEwXPXxtMzFySUb/0FsKb6Qtc5GntqE5llD4mMOHCSnc5YXJbQQkBuD4opqg BgjLcJNAR/ZIuD+BoUSSaZRf3NAG6j79q0nr9wvF15HFIV00FiX3Pw1E71wWk9Pr T6yNCuHjtzv9nySyFrUhHDL2WSLQOXiZDH5DRAlPz4TUbhUJa+C8iT6yMdXSkBMX 6UL86wnVZcVYXlgRfnYE8dZIeD2yxu2MRg2/gN9qzwprFxYRv2BkXxLVa9Pg8oIz w0P6wikkZsy85EvOVDirzH5UsZ+6eLj0pQFEzvPLsM72t/PzRmVsPeyVj/dqttgY YgY5+SRQP+2G26oZayLaGUZV7m72Ufx1yzuMvKzTic3rwI8O6LvivwPnao7y8PSq 9T0ZWmQR9mFUQ0XkIU9U06OOZA1g4vYW3BjNp13AknAmjjRW7cc= =btiV -----END PGP SIGNATURE----- -- PHP 7.4 Release Manager Host of PHP Internals News: https://phpinternals.news Like Xdebug? Become my Patron: https://www.patreon.com/derickr https://derickrethans.nl | https://xdebug.org | https://dram.io twitter: @derickr and @xdebug
PHP 7.3.12 Released
The PHP development team announces the immediate availability of PHP 7.3.12. This is a bug fix release. All PHP 7.3 users are encouraged to upgrade to this version. For source downloads of PHP 7.3.12 please visit our downloads page. Windows binaries can be found on the PHP for Windows site. The list of changes is recorded in the ChangeLog. Release Announcement: <http://php.net/releases/7_3_12.php> Downloads: <http://www.php.net/downloads> Windows downloads: <http://windows.php.net/download> Changelog: <http://www.php.net/ChangeLog-7.php#7.3.12> Many thanks to all the contributors and supporters! Stanislav Malyshev, Christoph M. Becker php-7.3.12.tar.bz2 SHA256 hash: d317b029f991410578cc38ba4b76c9f764ec29c67e7124e1fec57bceb3ad8c39 PGP signature: -----BEGIN PGP SIGNATURE----- iQJABAABCAAqFiEEy69p8XOg/qS1N/Rw1myVkxGLzLYFAl3TxCAMHGNtYkBwaHAu bmV0AAoJENZslZMRi8y2J+kP/iHrvVJg8zMaakOMqs6Rz7sr2/QAuu1e322VpG6N r5xwgNiuQTLBLtpX2DsjNvGMiMNc1zSBSIVLyuxkPACVkYAJ41iea9pTUszCGZyy k+3/nG0YViEW+21pPxYrikDC1BtEcaXMojwfIqE7JFCFl3pODfDJus9L5Uw0QjVI TJmm8a/umQhTWhKw2PBKWnHjNkB6DNolWCe4O6BjQn+sI8i66c2WWQLT5u04yySM OcLmLbXXRD4LkXfObvU2QTbe0nU2p4SIe8WLZ8wDuaGOAHSiirgbeTfnCklQjCbw xz6grfi71DTjbNghsl9ni0WSR1QBnFwxhT4GsyG/V6NT2aMNJFsKtJxKG0NQUoDL IxIctNQSqAnJKUYGFmX+4MVybRIn4t4C5SY95eSIKMMQPeycVHk7FCc4RX8dGdUI 99pp2dkB5s5M8dQTYOoDUS8k0fsgRbvDSB8WeKjIh2pSPeGsJp1GXIQqdqdatyVK GVgfGqXlX9V0JqrfpM37yz0m5EBf8JPUod1hUVU5XzCu6G7DLf+h3KqyaKycEmw3 7r1QYbSXnIfxpbI//vPCpI53krHkcWwODCFiOv4ahZbel6NM+aL3gm9i3g2OUTGe a09WDTXImwlUgsX9uXM0ueCLAC6LqJlNIFVga11J+d2keGdCxlSysU0bFLpA+jFi kHB6 =Fc60 -----END PGP SIGNATURE----- php-7.3.12.tar.gz SHA256 hash: d617e5116f8472a628083f448ebe4afdbc4ac013c9a890b08946649dcbe61b34 PGP signature: -----BEGIN PGP SIGNATURE----- iQJABAABCAAqFiEEy69p8XOg/qS1N/Rw1myVkxGLzLYFAl3TxCYMHGNtYkBwaHAu bmV0AAoJENZslZMRi8y2AfMP/2vqQIiv7RvjP2SIFEPboUbcfCsDkHf9v9nJIj39 pybOMFm+I8WfSo73+JSWYjC0agNKlPRNjGmuG79pWtfp+CQlltAjkMlvaRCM5VkW okgqHMvQrTyUqPVsiQqzbDFe6pmRK/jPOVrpfaitpB3z13eNvX51qpfnIroX3Q21 U2UTRe2vKj0VW8LcZG6mL/WU8ZmZ7zN8O5EpPA9b98EQlT0L7GJTjtSiTa1X/tAV rQt5TRuzVxoCNFE29R7AhfGhPcV9Snre/Vb7o/FsoEWcAC5QMn/aW29rRj+jTUnw GASv6g+PHyGHpGogmsTp1ZQ2e09dr/nVGEOtXIGQUQ9rOCDntznAoRxwj+1X9zSm 24ANhomBLiWh6mFQwvLxGu74bx4qJnZR+3oVLLNwRvuIKYdNHNkaboLJXc9N6DyP DzuFk2L9WUjFeeYUmEOR9gGB4+A0b1aaZtR3GsXqIChUzWFBaulAx9wnJzxnDfH8 bps7q6CTwr34pCQILHrVaL6v/Y4IGbjlCkPVTENfoA3/Swa4Mth6n+p63A1Rr9Ce IonzJ3BlVQNzPcbj5ACxSJkL1Gm0s8eMKaCNyyEHXKENEnqIM48Ol3WMIcLEO15p BWgGkq8JullwpTJi5eKwlntsZ8BxTkxZim8vrfkwbJMS/dDS8DcxuSXzi60px4/G 3eSY =bGIc -----END PGP SIGNATURE----- php-7.3.12.tar.xz SHA256 hash: aafe5e9861ad828860c6af8c88cdc1488314785962328eb1783607c1fdd855df PGP signature: -----BEGIN PGP SIGNATURE----- iQJABAABCAAqFiEEy69p8XOg/qS1N/Rw1myVkxGLzLYFAl3TxCcMHGNtYkBwaHAu bmV0AAoJENZslZMRi8y2P8kP/ibyZReZhOms+perI/eOjkb8iT2vdbk81HrJWWfZ BRLZSFQI1HIxC4TGgSJdsExg6vkP+MYK4vbUrfS4dWthefIZBnPYhyBy7vAesHkf inJiIP8dXJ6l/V4kx+O/4dcRGjhHosMAaewzXCZGSFXgUo5XXrnDJVjVkVxu3sZk vFHp6PYZMBv3cPGo1Y0glNVcw4hZVpGcBqfcay1TSTsfTYLHttPcsBzuVk5kwLRR 6+uba/WcVXcRp6/pLdz4EgQU8Mk0Uw6BuX0wtLGXhuvxbzupe0chKsGryoIk5rLT HozvFdpZaoRDyl2Pt+hwqJxRKZwbWoISYNrzReALHTQdRV1dyGOkM6I0SKv07b9I 5Ds2RfPLJ92yBgUyPuZFXCJ6Q4VnZaz7ynbzhZCGSYXPDykhUWVrsATH/DJpiNX1 Ba2pYE3CqULUUlpjnwO6F3Bm0W+67sglmIT1O0CY8kA820xlHZp89Tloi7DUV5Ub E6+4VQwp9CS8eRNRDUhmtZyYf5/uSjvstUQVgWE18f+DH7KSyrSAMsi7z7+FKcah SZTkVcMzoWubzQqjlvfjlWgdMxSzpRXODnb824XA4cGvrh7D+vuYTW+IROD3CsN6 WtLu2xJrEEPxs9PQoC88Sa3UQMYUK6hATychMTD61IWrj1hH9OreFMt2MnceeXl3 WvB5 =MWkh -----END PGP SIGNATURE-----
ASP.NET Core updates in .NET Core 3.1 Preview 3

Sourabh
.NET Core 3.1 Preview 3 is now available. This release is primarily focused on bug fixes.
See the release notes for additional details and known issues.
Get started
To get started with ASP.NET Core in .NET Core 3.1 Preview 3 install the .NET Core 3.1 Preview 3 SDK.
If you’re on Windows using Visual Studio, for the best experience we recommend installing the latest preview of Visual Studio 2019 16.4. Installing Visual Studio 2019 16.4 will also install .NET Core 3.1 Preview 3, so you don’t need to separately install it. For Blazor development with .NET Core 3.1, Visual Studio 2019 16.4 is required.
Alongside this .NET Core 3.1 Preview 3 release, we’ve also released a Blazor WebAssembly update. To install the latest Blazor WebAssembly template also run the following command:
dotnet new -i Microsoft.AspNetCore.Blazor.Templates::3.1.0-preview3.19555.2
Upgrade an existing project
To upgrade an existing ASP.NET Core 3.1 Preview 2 project to 3.1 Preview 3:
- Update all Microsoft.AspNetCore.* package references to 3.1.0-preview3.19555.2
See also the full list of breaking changes in ASP.NET Core 3.1.
That’s it! You should now be all set to use .NET Core 3.1 Preview 3!
Give feedback
We hope you enjoy the new features in this preview release of ASP.NET Core! Please let us know what you think by filing issues on GitHub.
Thanks for trying out ASP.NET Core!
Improvements in .NET Core 3.0 for troubleshooting and monitoring distributed apps

Sourabh
Post was authored by Sergey Kanzhelev. Thank you David Fowler and Richard Lander for reviews.
Introduction
Operating distributed apps is hard. Distributed apps typically consists of multiple components. These components may be owned and operated by different teams. Every interaction with an app results in distributed trace of code executions across many components. If your customer experiences a problem – pinpointing the root cause in one of components participated in a distributed trace is a hard task.
One big difference of distributed apps comparing to monoliths is a difficulty to correlate telemetry (like logs) across a single distributed trace. Looking at logs you can see how each component processed each request. But it is hard to know which request in once component and request in other component belong to the same distributed trace.
Historically, Application Performance Monitoring (APM) vendors provided the functionality of distributed trace context propagation from one component to another. Telemetry is correlated using this context. Due to heterogeneous nature of many environments, with components owned by different teams and using different tools for monitoring, it was always hard to instrument distributed apps consistently. APM vendors provided automatic code injection agents and SDKs to handle complexity of understanding various distributed context formats and RPC protocols.
With the upcoming transition of W3C Trace Context specification into Proposed Recommendation maturity level, and support of this specification by many vendors and platforms, the complexity of the context propagation is decreasing. The W3C Trace Context specification describes semantics of the distributed trace context and its format. This ensures that every component in a distributed app may understand this context and propagate it to components it calls into.
Microsoft is working on making distributed apps development easier with many ongoing developments like Orleans framework and project Dapr. As for distributed trace context propagation – Microsoft services and platforms will be adopting a W3C Trace Context format.
We believe that ASP.NET Core must provide an outstanding experience for building distributed tracing apps. With every release of ASP.NET Core we execute on this promise. This post describes the scenario of distributed tracing and logging highlighting improvements in .NET Core 3.0 and talks about discussions of a new exciting features we plan to add going forward.
Distributed Tracing and Logging
Let’s explore distributed tracing in .NET Core 3.0 and improvements recently made. First, we’ll see how two “out of the box” ASP.NET Core 3.0 apps has logs correlated across the entire distributed trace. Second, we’ll explore how easy it is to set distributed trace context for any .NET Core application and how it will automatically be propagated across http. And third, we’ll see how the same distributed trace identity is used by telemetry SDKs like OpenTelemetry and ASP.NET Core logs.
This demo will also demonstrate how .NET Core 3.0 embraces W3C Trace Context standard and what other features it offers.
Demo set up
In this demo we will have three simple components: ClientApp, FrontEndApp and BackEndApp.

BackEndApp is a template ASP.NET Core application called WeatherApp. It exposes a REST API to get a weather forecast.
FrontEndApp proxies all incoming requests into the calls to BackEndApp using this controller:
[ApiController]
[Route("[controller]")]
public class WeatherForecastProxyController : ControllerBase
{ private readonly ILogger<WeatherForecastProxyController> _logger; private readonly HttpClient _httpClient; public WeatherForecastProxyController( ILogger<WeatherForecastProxyController> logger, HttpClient httpClient) { _logger = logger; _httpClient = httpClient; } [HttpGet] public async Task<IEnumerable<WeatherForecast>> Get() { var jsonStream = await _httpClient.GetStreamAsync("http://localhost:5001/weatherforecast"); var weatherForecast = await JsonSerializer.DeserializeAsync<IEnumerable<WeatherForecast>>(jsonStream); return weatherForecast; }
}
Finally, ClientApp is a .NET Core 3.0 Windows Forms app. ClientApp calls into FrontEndApp for the weather forecast.
private async Task<string> GetWeatherForecast()
{ return await _httpClient.GetStringAsync( "http://localhost:5000/weatherforecastproxy");
}
Please note, there were no additional SDKs enabled or libraries installed on demo apps. As the demo progresses – every code change will be mentioned.
Correlated logs
Let’s make the very first call from ClientApp and take a look at the logs produced by FrontEndApp and BackEndApp.
FrontEndApp (a few line breaks added for readability):
info: Microsoft.AspNetCore.Routing.EndpointMiddleware[1] => ConnectionId:0HLR1BR0PL1CH => RequestPath:/weatherforecastproxy RequestId:0HLR1BR0PL1CH:00000001, SpanId:|363a800a-4cf070ad93fe3bd8., TraceId:363a800a-4cf070ad93fe3bd8, ParentId:
Executed endpoint 'FrontEndApp.Controllers.WeatherForecastProxyController.Get (FrontEndApp)'
BackEndApp:
info: BackEndApp.Controllers.WeatherForecastController[0] => ConnectionId:0HLR1BMQHFKRL => RequestPath:/weatherforecast RequestId:0HLR1BMQHFKRL:00000002, SpanId:|363a800a-4cf070ad93fe3bd8.94c1cdba_, TraceId:363a800a-4cf070ad93fe3bd8, ParentId:|363a800a-4cf070ad93fe3bd8. Executed endpoint 'FrontEndApp.Controllers.WeatherForecastController.Get (BackEndApp)'
Like magic, logs from two independent apps share the same TraceId. Behind the scene, ASP.NET Core 3.0 app will initialize a distributed trace context and pass it in the header. This is how incoming headers to the BackEndApp looks like:

You may notice that FrontEndApp didn’t receive any additional headers:

The reason is that in ASP.NET Core apps – distributed trace being initiated by ASP.NET Core framework itself on every incoming request. Next section explains how to do it for any .NET Core 3.0 app.
Initiate distributed trace in .NET Core 3.0 app
You may have noticed the difference in behavior of Windows Forms ClientApp and ASP.NET Core FrontEndApp. ClientApp didn’t set any distributed trace context. So FrontEndApp didn’t receive it. It is easy to set up distributed operation. Easiest way to do it is to use an API called Activity from the DiagnosticSource package.
private async Task<string> GetWeatherForecast()
{ var activity = new Activity("CallToBackend").Start(); try { return await _httpClient.GetStringAsync( "http://localhost:5000/weatherforecastproxy"); } finally { activity.Stop(); }
}
Once you have started an activity, HttpClient knows that distributed trace context needs to be propagated. Now all three components – ClientApp, FrontEndApp and BackEndApp share the same TraceId.
W3C Trace Context support
You may notice that the context is propagating using the header called Request-Id. This header was introduced in Asp.Net Core 2.0 and is used by default for better compatibility with these apps. However, as the W3C Trace Context specification is being widely adopted, it is recommended to switch to this format of context propagation.
With .NET Core 3.0, it is easy to switch to W3C Trace Context format to propagate distributed trace identifiers. Easiest way to do it is in the main method- just add a simple line in the Main method:
static void Main()
{ Activity.DefaultIdFormat = ActivityIdFormat.W3C; … Application.Run(new MainForm());
}
Now, when the FrontEndApp receives requests from the ClientApp, you see a traceparent header in the request:

The ASP.NET Core app will understand this header and recognize that it needs to use W3C Trace Context format for outgoing calls now.
Note, ASP.NET Core apps will recognize the correct format of distributed trace context automatically. However, it is still a good practice to switch the default format of distributed trace context to W3C for better interoperability in heterogeneous environments.
You will see all the logs attributed with the TraceId and SpanId obtained from the incoming header:
info: Microsoft.AspNetCore.Hosting.Diagnostics[1] => ConnectionId:0HLQV2BC3VP2T => RequestPath:/weatherforecast RequestId:0HLQV2BC3VP2T:00000001, SpanId:da13aa3c6fd9c146, TraceId:f11a03e3f078414fa7c0a0ce568c8b5c, ParentId:5076c17d0a604244 Request starting HTTP/1.1 GET http://localhost:5000/weatherforecast
Activity and distributed tracing with OpenTelemetry
OpenTelemetry provides a single set of APIs, libraries, agents, and collector services to capture distributed traces and metrics from your application. You can analyze them using Prometheus, Jaeger, Zipkin, and other observability tools.
Let’s enable OpenTelemetry on the BackEndApp. It is very easy to do, just call AddOpenTelemetry on startup:
services.AddOpenTelemetry(b => b.UseZipkin(o => { o.ServiceName="BackEndApp"; o.Endpoint=new Uri("http://zipkin /api/v2/spans"); }) .AddRequestCollector());
Now, as we just saw, TraceId in the FrontEndApp logs will match TraceId in the BackEndApp.
info: Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker[2] => ConnectionId:0HLR2RC6BIIVO => RequestPath:/weatherforecastproxy RequestId:0HLR2RC6BIIVO:00000001, SpanId:54e2de7b9428e940, TraceId:e1a9b61ec50c954d852f645262c7b31a, ParentId:69dce1f155911a45 => FrontEndApp.Controllers.WeatherForecastProxyController.Get (FrontEndApp)
Executed action FrontEndApp.Controllers.WeatherForecastProxyController.Get (FrontEndApp) in 3187.3112ms info: Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker[2] => ConnectionId:0HLR2RLEHSKBV => RequestPath:/weatherforecast RequestId:0HLR2RLEHSKBV:00000001, SpanId:0e783a0867544240, TraceId:e1a9b61ec50c954d852f645262c7b31a, ParentId:54e2de7b9428e940 => BackEndApp.Controllers.WeatherForecastController.Get (BackEndApp)
Executed action BackEndApp.Controllers.WeatherForecastController.Get (BackEndApp) in 3085.9111ms
Furthermore, the same Trace will be reported by Zipkin. So now you can correlate distributed traces collected by your distributed tracing tool and logs from the machine. You can also give this TraceId to the user when ClientApp experience issues. The user can share it with your app support and corresponding logs and distributed traces can be easily discovered across all components.

Taking example one step further – you can easily enable monitoring for all three components and see them on the gantt chart.

ASP.NET Core apps integrates with distributed trace
As we just seen telemetry collected by Application Monitoring vendors is correlated using the same distributed trace context as ASP.NET Core uses. This makes ASP.NET Core 3.0 apps great for the environments where different components are owned by different teams.
Imagine that only two of apps – A and C on the picture below enabled telemetry collection using SDK like OpenTelemetry. Before ASP.NET Core 3.0 it would mean that distributed tracing will not work, and a trace will be “broken” by app B.

With ASP.NET Core 3.0, since in most deployments ASP.NET Core apps are configured with the basic logging enabled, app B will propagate distributed trace context. This distributed traces from A and C will be correlated.
With the example of apps from before – if ClientApp and BackEndApp are instrumented and FrontEndApp is not – you see distributed trace is still being correlated:

This also makes ASP.NET Core apps great for the service mesh environments. In service mesh deployments, A and C from the picture above may represent a service mesh. In order for service mesh to stitch request entering and leaving component B – certain headers have to be propagated by an app. See this note from the Istio for example:
Although Istio proxies are able to automatically send spans, they need some hints to tie together the entire trace. Applications need to propagate the appropriate HTTP headers so that when the proxies send span information, the spans can be correlated correctly into a single trace.
As we work with service mesh authors to adopt W3C Trace Context format, ASP.NET Core apps will “just work” and propagate needed headers.
Passing additional context
Talking about other scenarios, it is often the case that you want to share more context between components in a distributed app. Let’s say a ClientApp wants to send its version so all REST calls will know where the request is coming from. You can add these properties in Activity.Baggage like this:
private async Task<string> GetWeatherForecast()
{ var activity = new Activity("CallToBackend") .AddBaggage("appVersion", "v1.0") .Start(); try { return await _httpClient.GetStringAsync( "http://localhost:5000/weatherforecastproxy"); } finally { activity.Stop(); }
}
Now on server side you see an additional header Correlation-Context in both – FrontEndApp and BackEndApp.

And you can use the Activity.Baggage to attribute your logs:
var appVersion = Activity.Current.Baggage.FirstOrDefault(b => b.Key == "appVersion").Value;
using (_logger.BeginScope($"appVersion={appVersion}"))
{ _logger.LogInformation("this weather forecast is from random source");
}
And you see the scope now contains an appVersion:
info: FrontEndApp.Controllers.WeatherForecastController[0] => ConnectionId:0HLQV353507UG => RequestPath:/weatherforecast RequestId:0HLQV353507UG:00000001, SpanId:37a0f7ebf3ecac42, TraceId:c7e07b7719a7a3489617663753f985e4, ParentId:f5df77ba38504846 => FrontEndApp.Controllers.WeatherForecastController.Get (BackEndApp) => appVersion=v1.0 this weather forecast is from random source
Next steps
With the improvements for ASP.NET Core 3.0 we hear that some of the features included in ASP.NET Core is hard to consume. Developers and DevOps wants a turnkey telemetry solution that will work with many APM vendors. We believe that investments we are making in OpenTelemetry will allow more people to benefit from investments we are making in ASP.NET Core monitoring and troubleshooting. This is one of the big areas of investments for a team.
We also help people adopt W3C Trace Context everywhere and will be making it a default distributed trace context propagation format in future versions of ASP.NET Core.
Another area of investments is to improve distributed context propagation scenarios. Distributed apps comparing to monoliths are lacking common shared state with the lifetime of a single distributed trace. This shared state (or context) can be used for basic logging as was described in this article, as well as for advanced routing of requests, experimentation, A/B testing, business context propagation, etc. Some of scenarios are described in this epic: Distributed Context in ASP.NET and Open Telemetry.
Please send us your feedback and tell what improvements in distributed apps troubleshooting and monitoring we need to make.
Minimize distractions and stay focused with AI-powered updates in Microsoft 365

It’s no secret that work and life are speeding up. It’s not uncommon to spend all day in meetings, writing emails, or on the phone, leaving little time to focus on what is most important to you. Many of us have never-ending to-do lists and spend time working after hours to complete pressing tasks. MyAnalytics, your source of personal productivity insights in Microsoft 365, was built to help with these very challenges—and today it’s getting a refresh.
Via a dashboard, Insights in Outlook, and weekly email digests, MyAnalytics provides insights and AI-powered suggestions to help you work smarter. A new MyAnalytics experience—generally available starting today—makes the insights more outcome-oriented in four key areas: focus, wellbeing, network, and collaboration. For example, insights that previously showed you the hours you spent on email, chats, calls, and meetings outside your working hours over the past week now show you the number of days you successfully disconnected after work over the past month. That way, you can set goals and build habits that help you achieve more quiet days.
To make these insights even more actionable, in the coming quarters, we’ll introduce the ability to create personal plans to make it easy to set goals and take steps toward improving your work patterns each day. Focus plan will be the first in this series of MyAnalytics updates. By helping you plan focus time on a regular basis to complete your most pressing tasks and limiting distractions, focus plan in MyAnalytics will help you balance collaboration with meaningful output. Today, we’re unveiling the core elements of the focus plan.
Create a personal focus plan
Productivity preferences are different for everyone, but experts on deep work report that setting aside regular blocks of time to focus on challenging work can have massive benefits. With the focus plan, MyAnalytics will help you establish a daily focus time routine. The focus plan will offer you the flexibility to have daily focus time booked automatically based on your availability, or surface suggestions to book focus time manually as you work in Outlook. The automatic booking algorithm will prioritize booking morning hours, if they are open, so you can be at your peak capacity for tackling challenging analytics tasks.
Maintain your focus routine
If you receive a meeting invite that conflicts with booked focus time, Outlook will provide inline suggestions and weekly email digests with actionable messages—making it easy to reschedule the focus time right from your inbox and maintain your routine.
Make time for outstanding tasks
To help you set aside time for pressing tasks—tasks you promised to complete for coworkers and tasks they asked you to get done—new inline suggestions and adaptive cards in email digests will be introduced in Outlook. These will use AI to surface outstanding tasks from emails, making it seamless for you to reserve focus time for them.
Work uninterrupted during focus time
Information worker studies find it takes an average of around 23 minutes to return to your original task after interruptions or self-distractions. To help limit these when you are trying to get deep, meaningful work done, Microsoft Teams will automatically switch to “Do Not Disturb” during focus time. Your status will be set to “Focus” and you will only get notifications for messages that are urgent or from contacts with priority access during focus time.
We’re on a journey at Microsoft to build technologies that empower you to do your best work. Visit the new MyAnalytics personal dashboard and check out the weekly email digests—generally available today. They can help you better understand your current work patterns and get actionable insights to prioritize focus, disconnect and recharge, keep up with important contacts and relationships, and improve team collaboration.
Stay tuned in the coming months for the preview of focus plan to Microsoft 365 and Office 365 Enterprise customers who have MyAnalytics as part of the E5 plan, as an add-on to E1 and E3, or with Workplace Analytics. Over time, focus plan will become available with additional plans that have business hosted email (Exchange Online).
Setting HTTP header attributes to enable Azure authentication/authorization using HTTPRepl

Angelos
Posted on behalf of Ahmed Metwally
The HTTP Read-Eval-Print Loop (REPL) is a lightweight, cross-platform command-line tool that’s supported everywhere .NET Core is supported. It’s used for making HTTP requests to test ASP.NET Core web APIs and view their results. You can use the HTTPRepl to navigate and interrogate any API in the same manner that you would navigate a set of folders on a file system. If the service that you are testing has a swagger.json file, specifying that file to HTTPRepl will enable auto-completion.
To install the HTTP REPL, run the following command:
>dotnet tool install -g Microsoft.dotnet-httprepl
For more information on how to use HTTPRepl, read Angelos’ post on the ASP.NET blog. As we continue to improve the tool, we look to add new commands to facilitate the use of HTTPRepl with different types of secure API services. As of this release, HTTPRepl supports authentication and authorization schemes achievable through header manipulation, like basic, bearer token, and digest authentication. For example, to use a bearer token to authenticate to a service, use the command “set header”. Set the “Authorization” header to the bearer token value using the following command:
>set header Authorization “bearer <token_value>”
And replace <token_value> with your authorization bearer token for the service. Don’t forget to use the quotation marks to wrap the word bearer along with the <token_value> in the same literal string. Otherwise, the tool will treat them as two different values and will fail to set the header properly. To ensure that the header in the HTTP request is being formatted as expected, enable echoing using the “echo on” command.
Using the “set header” command, you can leverage HTTPRepl to test and navigate any secure REST API service including your Azure-hosted API services or the Azure Management API. To access a secure service hosted on Azure, you need a bearer token. Get a bearer token for your Azure subscription, using the Azure CLI to get an access token for the required Azure subscription:
>az login
Copy your subscription ID from the Azure portal and paste it in the “az account set” command:
>az account set --subscription "<subscription ID>" >az account get-access-token { "accessToken": "<access_token_will_be_displayed_here>", "expiresOn": "<expiry date/time will be displayed here>", "subscription": "<subscription ID>", "tenant": "<tenant ID>", "tokenType": "Bearer" }
Copy the text that appears in place of <access_token_will_be_displayed_here>. This is your access token. Finally, run HTTPRepl:
>httprepl
(disconnected)~ connect https://management.azure.com
Using a base address of https://management.azure.com/
Unable to find a swagger definition
https://management.azure.com/~ set header Authorization "bearer <em><paste_token_here></em>"
https://management.azure.com/~ cd subscriptions
https://management.azure.com/subscriptions/~ cd <subscription_ID>
For example, to search for a list of your Azure app services, issue the “get” command for the list of sites through the Microsoft web provider:
https://management.azure.com/subscriptions/<subscription_ID>/~ get providers/Microsoft.Web/sites?api-version=2016-08-01 HTTP/1.1 200 OK Cache-Control: no-cache Content-Length: 35948 Content-Type: application/json; charset=utf-8 Date: Thu, 19 Sep 2019 23:04:03 GMT Expires: -1 Pragma: no-cache Strict-Transport-Security: max-age=31536000; includeSubDomains X-Content-Type-Options: nosniff x-ms-correlation-request-id: <em>xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx</em> x-ms-original-request-ids: <em>xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx;xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx</em> x-ms-ratelimit-remaining-subscription-reads: 11999 x-ms-request-id: xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx x-ms-routing-request-id: WESTUS:xxxxxxxxxxxxxxxx:xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxx { "value": [
<list of azure resources> ] } https://management.azure.com/subscriptions/<subscription_ID>/~
You can use the full list of Azure REST APIs to browse and manage services in your Azure subscriptions. For more details on how HTTPRepl works, please check the ASPNET blog. To use HTTPRepl, download and install the global tool from the .NET Core CLI.
Give us feedback
It’s not HTTPie, it’s not Curl, but it’s also not PostMan. It’s something that you run and stays running and its aware of its current context. We find this experience valuable, but ultimately what matters the most is what you think. Please let us know your opinion by leaving comments below or on GitHub.
Ahmed Metwally, Sr. Program Manager, .NET dev tools @ahmedMsftAhmed is a Program Manager on the .NET tooling team focused on improving web development for .NET developers.
Microsoft Redmond campus modernization – Construction update

Since we kicked off demolition in January 2019, there has been great progress on the Redmond campus modernization project. Check out the timelapse below to see some of the work that has been done thus far.
Credit: Skycatch
Here are some other fun facts about the construction efforts:
- The square footage of the building demolition on east campus is equivalent to the total square feet of all thirty NFL football fields combined.
- Concrete from the demolition would be enough to build 1.3 Empire State Buildings. One hundred percent of the concrete is being recycled, and some of it will come back to the site for use in the new campus.
- We’ve recycled a variety of materials from the deconstructed buildings including carpets, ceiling tiles, outdoor lights and turf from the sports fields. As a result, we have diverted almost 95 percent of our demolition waste away from landfills.
- The resources recycled from the demolition thus far includes 449,697 pounds (50 trucks full) of carpet and 284,400 pounds of ceiling tiles.
- The majority of the furniture removed from the demolished buildings that will not be reused in other buildings, has been donated to local charities and nonprofit startups.
- We’ve moved 1 million cubic yards of dirt and reached the bottom of the digging area for our underground parking facility, which will consolidate traffic and make our campus even more pedestrian and bike friendly.
- We‘ve installed 51k feet of fiber optic cabling. That’s just over 9.5 miles.
- The Microsoft Art Program has relocated 277 art pieces, including an early Chihuly and a Ken Bortolazzo sculpture. These art pieces were placed across our Puget Sound buildings so they can continue to be enjoyed by employees and guests.
- The drone video featured above, created by Skycatch, not only offers a unique view of the project, but the images have fed into 3D models of the site which are providing data to more effectively tackle challenges as they arise, plan ahead and monitor construction progress.
- The project is actively coordinating over 100 different building information models containing over 2.8 million individual 3D building components.
We look forward to continuing this journey to modernize Microsoft’s workplaces. When completed, the project will provide additional proximity for teams who collaborate and an inspiring, healthy and sustainably responsible workplace where our employees can do their best work and grow their careers.
Continued thanks for your patience and flexibility during the construction phase. As a reminder, please allow extra time to get around campus and remind visitors to do the same. Always be cautious around the construction sites and remain mindful of safety notices and instructions.
Follow updates and developments as this project progresses and view the latest renderings on Microsoft’s Modern Campus site.
PHP 7.2.21 Released
Hi, The PHP development team announces the immediate availability of PHP 7.2.21. This is a security release which also contains several minor bug fixes. All PHP 7.2 users are encouraged to upgrade to this version. For source downloads of PHP 7.2.12 please visit our downloads page. Windows binaries can be found on the PHP for Windows site. The list of changes is recorded in the ChangeLog. Release Announcement: http://php.net/releases/7_2_21.php Downloads: http://www.php.net/downloads Windows downloads: http://windows.php.net/download Changelog: http://www.php.net/ChangeLog-7.php#7.2.21 Many thanks to all the contributors and supporters! Sara Golemon, Remi Collet php-7.2.21.tar.gz SHA256 hash: 8327682bee4a8fd2edf5bbfcc393d986b945bec433fc74458d05e766701b313c PGP signature: -----BEGIN PGP SIGNATURE----- iQIcBAABAgAGBQJdQAy2AAoJENyf+NPuWvJ/ZeUP/3YsRNibx8Noj8hTX2EvyORK D0ziy3CogOouHBZFfcaq41QLDo/7MABs7YB4iFPBXs3QJXNsYfewbaKVRjOOOF2l 2AQfCk40I7W9PSWRWLWs37wv5x0Tg7OkQLxAZAhtxjHC5e0YiUlq2/qK7JQv9MAZ dRErSfsnq10DirruopEMjYSHCRapQaBt3VUks3yX+B+FpG1v0EjGgF/ooQINK/tD xJY2PlNmpdjSwCeMpJtizQqBQlgWv/DZ1B3cOLucYPgC6ZcAFOV+KuOWAo8pJ0v5 opXxF9JDe2hGSF7cQ5ZGIOakgQOkHIz7Y9aYsHQIIQ7MkStGs4K7WLwFAeo9O47N CP6AnC9lDD2CK30dLUYBp9s7bFucIK4NUYWoOLUOnHyatL/qylSfTYGaMgTnmUqt D8cGPgRpoIC/go93Lm3O3rCJ7Wsfn/iBXh7tfbQ71MLv8livT0U14+LvBEIMv/0E x3+GKTmOVglWMjOJY1uQsqeQvRr7CRf519qvQtKsIZcAlghnN+4ZLu8n4zj4EmXs yr9AGK8k9oUOez6aMnmGeOsv4htgdldO6omUoKPw0HbPkdO5bmFJmHLfI9Tujfp4 iEeqNRzhBPP4fXxrvN3hbtlFXJIXsl3XU2JTIBDnZsRcSnF0CCRdJ1xrguhrU2P6 uM3bfRfiATQWNVwmB6Ik =homP -----END PGP SIGNATURE----- php-7.2.21.tar.bz2 SHA256 hash: 343183a1be8336670171885c761d57ffcae99cbbcf1db43da7cb5565056b14ef PGP signature: -----BEGIN PGP SIGNATURE----- iQIcBAABAgAGBQJdQAy5AAoJENyf+NPuWvJ/ZPwQAJmOZW1+WwS6ZwTj3p4y6uic dURJcHHhFQinRQWSf9CiJL7GkTSy+9Cq78iV/z8pdgC8Gk4X7o+XkFm3Huzfabsn rKtsJk+b6AEOAd1lGe2jaQitwg9zC0p4vabT3mfkCDUKeZosAUSA/OvL6VsOnTU6 AGu9ygUg2m7F5tGmrqnTHvchFcz034JRmZ9nz0TpXlsl7nQJ7cLyLFjdPvNFKaJJ 79hNcIEfSRNeoxouAlivtwYdd4To+2MjSfLbZ8OWTwdmj3+sUlhL5cONqVya1h3J NLJiLVKupOXg5ZrVsUBl+a2VzNXVqrpcnMHMsoxkxjRfM6AniUAd/WFFOmWaJsrF e3zgB6ZzBBdHUh8YodOZzw7/eMOGZEGgRtkQTBQ01UQs2LM9DgJ8zSxaflvp6Q5G 0ltXsViI/NbuoPTjcT+8RFhs+q7HuevdyPIcDEqw1LwBOXeyvXKros2/o4iZiLQx LDH5CjtB9kBP28hgxVAjPlYl3FiKWh3GWFS82zGO+pxYmAqxjpQoKvMiWI2jiYCQ IE5J51ifxdIHOCHatVHQzuq3uyo4y5yu9MAPKYpbSYztLMp7ohOltln3DWdYyGg1 m40ETOmWZF0nsapP9jTe5kQkS/br6kC2T5dKGA26gZaK/SHKljMdGJZC5CYAI4Uw M4NiwKKRAdzuzWZyQDXb =ELOd -----END PGP SIGNATURE----- php-7.2.21.tar.xz SHA256 hash: de06aff019d8f5079115795bd7d8eedd4cd03daecb62d58abb18f492dd995c95 PGP signature: -----BEGIN PGP SIGNATURE----- iQIcBAABAgAGBQJdQAy7AAoJENyf+NPuWvJ/SnsP/1PxagP39MHfr6GsKm7YnTwm oJshcRyAlmJMBRkJyhNQn0Mvk5/ulPTvnB7fwwcO9xJIa2Zovv2bSAzzCsumEKaH 7G1qvyQvIEGVbOF15R012vLCgOBs5ILRXZi/U1IlEGlQmzdimrqUxqRTZZ7i3pe0 Z1kxy7ZGk1ADQjxOv5L4qsTEmyEuLifBPAWftSwiIiR36H4ma5jIU51Py3kNbXt5 5PcwAJl/2ZeOQMHCvGvb7ZoJ4jP1cZLsXO+cdMmPFcwLHQs8kukKfq6sL77w565M 0lD4wdycWVJqHEK/Gz+qIEzjsmWoar8CuuP+3nyagn7RqIp3cVqRfvYGlxeZCz7f uIrEVCAUIU40q4znJstMyZ0yOUTz4KpbJ065FQs3hy6ykax4q51S529IZxK7/85k KaPKRtowU/JsiTeh9icpmF0Umf0g8yufRKvXEPpVTVM18eJnR91FRE/EMC8sazvN 4doyTc4r6mEfOKKJ/7P2/AujsQwoolkTkzArxsi7Wn/5eawF01AEnWXQ0D2Fnupw aJubFIvtepvtYu8BsaaUcpLhgiOdyMfwmKtcg/g0qa3yBSyqC03Ikp8lqIyzblW1 lIxRO1ts/PTqJNWPLH2/qtFnfpehkDo/LzNnP8CzGT7TAfWiv5TWVCEaH6S5yoml lE9H+wXRkw/hWIZ+uraR =Qs4n -----END PGP SIGNATURE-----



