From 45b6ed53d60be36cecb83be4ea6cf9979886f09a Mon Sep 17 00:00:00 2001 From: Daniel Bobadilla Date: Thu, 6 Mar 2025 11:10:05 -0300 Subject: [PATCH 01/14] publish article --- posts/dbobadilla/News-net9.md | 138 ++++++++++++++++++++++++++++++++++ 1 file changed, 138 insertions(+) create mode 100644 posts/dbobadilla/News-net9.md diff --git a/posts/dbobadilla/News-net9.md b/posts/dbobadilla/News-net9.md new file mode 100644 index 00000000..268f18a4 --- /dev/null +++ b/posts/dbobadilla/News-net9.md @@ -0,0 +1,138 @@ +# What's New in .NET 9: A Personal Take + +## Introduction +.NET 9 is a Short-Term Support (STS) release, setting the stage for the highly anticipated Long-Term Support (LTS) version 10. Despite its short-term nature, .NET 9 introduces several exciting new features and enhancements that provide a glimpse into the future direction of the .NET ecosystem. In this article, I will showcase the latest updates in .NET 9. +## Improved Performance and Scalability + +### Key Performance Enhancements +1. **Adaptive Server GC (Garbage Collection):** .NET 9 introduces adaptive server garbage collection, which adjusts memory usage according to application demands. This optimizes performance in environments with fluctuating memory needs. +2. **Vectorization Improvements:** The runtime has been optimized to support new silicon architectures like Arm64 SVE and Intel AVX10. Loop vectorization and bounds check elimination accelerate workloads, while exceptions now run 50% faster. +3. **Optimized LINQ Operations:** Common LINQ operations, such as `Take` and `DefaultIfEmpty`, are now up to 10 times faster. This reduces the overhead of these operations, improving overall performance in data-intensive applications. +4. **Adaptive Server GC Enhancements:** + - **Heap Utilization:** + - **.NET 8.0:** 70% + - **.NET 9.0:** 85% + - **Improvement:** 15% increase in heap utilization. + + - **Pause Time Reduction:** + - **.NET 8.0:** 200 ms + - **.NET 9.0:** 150 ms + - **Improvement:** 25% reduction in pause times. + + - **Memory Footprint:** + - **.NET 8.0:** 1.5 GB + - **.NET 9.0:** 1.2 GB + - **Improvement:** 20% reduction in memory footprint. + +## OpenAPI Support ans Swagger +Starting with .NET 9, Swagger is no longer included by default. Instead, developers are encouraged to use `Microsoft.AspNetCore.OpenApi` for API documentation. This change aims to provide a more streamlined and integrated experience for documenting APIs. + +## GUID Enhancements in .NET 9 + +### Guid V4 +The Guid type has been present in .NET from the very beginning, and a new Guid can be created using the `NewGuid()` method. This method generates a version 4 GUID following the UUID Version 4 specification in RFC 9562. GUIDs are globally unique, making them ideal for distributed systems. However, version 4 GUIDs are not sequential, which can lead to index fragmentation in relational databases. + +### Guid V7 +.NET 9 introduces a new GUID implementation based on timestamp and randomness. A Guid can be created using the `CreateVersion7()` method, which produces sequential GUIDs. This sequentiality makes them more suitable for relational databases, alleviating fragmentation issues. Additionally, the Guid type now includes a new `Version` property, allowing you to check the version of the created GUID. + +### Example of GUID Generation +```csharp +for (int i = 0; i < 5; i++) +{ + var guid = Guid.NewGuid(); + Console.WriteLine($"V{guid.Version}: {guid}"); +} +**Output:** +V4: 0557b321-abcf-4390-abee-4b8fbf93ff34 +V4: 21a98165-af1e-477e-9dee-7eb9c79e6c77 +V4: 7dbbf973-c55a-4917-87a5-95c16f356262 +V4: b13892f2-334f-409a-b9de-d90dea21eed4**Output:** + +```csharp +for (int i = 0; i < 5; i++) +{ + var guid = Guid.CreateVersion7(); + Console.WriteLine($"V{guid.Version}: {guid}"); +} + +**Output:** +V7: 01917bbe-d973-7beb-a813-106fcb4eff98 +V7: 01917bbe-d973-703c-8365-b7596740ac82 +V7: 01917bbe-d973-7234-a580-5f07730a3ad7 +V7: 01917bbe-d973-7751-b8ba-bb73afab4a5d +V7: 01917bbe-d973-7d36-9be0-2e6317919153 + +``` +Version 7 GUIDs are sequential, making them more suitable for use in relational databases. You can also pass a `DateTimeOffset` when creating a new Guid to control the timestamp. +V4: 52dc44f7-76e0-4689-a5e6-1a0f1c5f37a3 + +## Advanced Runtime Features +.NET 9 introduces new runtime features that enhance performance and flexibility: + +**Feature Switches with Trimming:** Developers can now toggle features on or off at runtime, allowing for leaner builds tailored to specific deployment scenarios. This results in smaller application sizes and faster load times. + +**Enhanced Arm64 Vectorization:** Applications targeting modern Arm64 hardware benefit from optimized vectorization and improved code generation. This ensures that .NET applications can leverage the full power of devices ranging from mobile phones to cloud-based servers. + +These runtime improvements not only enhance performance but also provide developers with greater control over application behavior and deployment. + +## Cloud-Native Development with .NET Aspire +.NET 9 takes cloud-native development to the next level with the introduction of .NET Aspire, an all-in-one toolkit designed to simplify the creation of production-ready, observable cloud-native applications. + +With .NET Aspire, developers gain access to pre-configured templates and tools that accelerate the setup of cloud-native architectures. Whether deploying to Kubernetes, leveraging containerized services, or setting up observability pipelines, .NET Aspire ensures a smooth and efficient workflow. + +The platform supports microservices, seamlessly integrating with Azure Functions to create lightweight, modular components that are easy to deploy, maintain, and scale. + +Additionally, .NET Aspire simplifies serverless computing, allowing developers to focus on writing business logic while the platform handles scalability and availability automatically. + +As cloud-native solutions continue to dominate the software development landscape in 2025, .NET Aspire positions .NET 9 as a powerful choice for developers looking to deliver scalable, resilient, and efficient applications. + +## AI Integration and Developer Productivity in .NET 9 + +In .NET 9, Microsoft has introduced a suite of tools and enhancements aimed at seamlessly integrating AI capabilities into applications while boosting developer productivity. + +### AI Building Blocks +- The introduction of `Microsoft.Extensions.AI` and `Microsoft.Extensions.VectorData` provides a unified layer of C# abstractions for interacting with AI services, including large language models and vector stores. +- These libraries facilitate the integration of AI functionalities, enabling developers to perform CRUD operations on vector stores and utilize vector and text search capabilities. +- Additionally, .NET 9 includes new tensor types, such as `TensorPrimitives` and `Tensor`, which expand AI capabilities by enabling efficient encoding, manipulation, and computation of multi-dimensional data. + +### Boosting Productivity +- To enhance developer productivity, .NET 9 introduces new LINQ methods like `CountBy` and `AggregateBy`. + - The `CountBy` method groups elements by a specified key and returns an enumeration of key-value pairs, simplifying the process of counting occurrences without the need for intermediate groupings via `GroupBy`. + - The `AggregateBy` method allows for aggregating data by a key selector, providing a more streamlined approach to data aggregation tasks. + +- These enhancements make data querying more intuitive and concise, reducing the complexity of common operations. +- Furthermore, improvements to the `TimeSpan` structure offer more intuitive methods for time calculations, allowing developers to work with time intervals more efficiently. + +By integrating these AI building blocks and productivity enhancements, .NET 9 empowers developers to create intelligent, efficient, and maintainable applications, positioning them to meet the evolving demands of software development in 2025 and beyond. + +## C# 13: Modernizing Code +C# 13 introduces features that make the language more expressive and reduce boilerplate code, streamlining the development process. + +**Object Initializers with Implicit Indexers:** This feature allows developers to initialize collections or dictionary-like objects with more concise syntax. Instead of explicitly specifying keys or indices, implicit indexers simplify the creation of objects with complex structures, making your code cleaner and easier to maintain. + +**Improved Method Group Handling:** C# 13 refines how method groups are treated, improving type inference and reducing ambiguity. This enhancement simplifies scenarios like passing methods as delegates or using them in LINQ expressions. + +**params Collections:** Writing methods that accept a variable number of arguments becomes more elegant with params collections. This improvement allows developers to pass arrays or lists directly to variadic methods, enhancing readability and reducing intermediate steps when working with collections. + +These updates help C# developers focus on implementing functionality without getting bogged down by verbose syntax or unnecessary complexity. +## .NET Libraries and Framework Updates +.NET 9 introduces significant updates to its libraries and frameworks, focusing on enhancing data handling, security, and database integration. These improvements help developers create efficient and secure applications with minimal overhead, positioning .NET 9 as a powerful tool for modern development in 2025. + +### System.Text.Json Improvements +System.Text.Json, the lightweight JSON library in .NET, receives key updates: + +- **JSON Schema Export:** Developers can now export JSON schemas directly from C# classes, simplifying validation and interoperability with APIs. +- **Customizable Indentation:** Improved control over serialization allows for tailored formatting of JSON output. +- **Support for Multiple Root-Level JSON Values:** System.Text.Json now handles multiple root-level JSON values in a single operation, enabling smoother integration with non-standard JSON streams. + +These enhancements make System.Text.Json an even more robust tool for managing structured data in web applications and APIs. + +### LINQ and Collections Additions +.NET 9 brings updates to LINQ and collections, making data handling simpler and more powerful: + +- **PriorityQueue Updates:** Enhanced functionality for `PriorityQueue` streamlines the management of prioritized tasks or items. +- **New LINQ Methods:** Features like `CountBy` and `AggregateBy` reduce the complexity of common data aggregation tasks, allowing developers to write cleaner, more concise queries. + +These additions improve productivity when working with complex data sets, making LINQ and collections more versatile and intuitive. +## Conclusion +.NET 9 focuses on reducing developers' workload by making applications faster and more efficient with minimal effort. It includes smarter memory management, enhanced performance, streamlined AI integration, and improved cross-platform compatibility. Key features like adaptive garbage collection, loop optimizations, and robust AI support with Microsoft.Extensions.AI and VectorData ensure that .NET 9 handles complex and frustrating tasks, allowing developers to concentrate on writing impactful code. From 0fe500c3973e868dbf36726560764c32976f2d84 Mon Sep 17 00:00:00 2001 From: Daniel Bobadilla Date: Wed, 19 Mar 2025 10:58:11 -0300 Subject: [PATCH 02/14] fix rename user directory --- posts/{dbobadilla => DanielBCloudX}/News-net9.md | 1 + 1 file changed, 1 insertion(+) rename posts/{dbobadilla => DanielBCloudX}/News-net9.md (99%) diff --git a/posts/dbobadilla/News-net9.md b/posts/DanielBCloudX/News-net9.md similarity index 99% rename from posts/dbobadilla/News-net9.md rename to posts/DanielBCloudX/News-net9.md index 268f18a4..39f43a21 100644 --- a/posts/dbobadilla/News-net9.md +++ b/posts/DanielBCloudX/News-net9.md @@ -115,6 +115,7 @@ C# 13 introduces features that make the language more expressive and reduce boil **params Collections:** Writing methods that accept a variable number of arguments becomes more elegant with params collections. This improvement allows developers to pass arrays or lists directly to variadic methods, enhancing readability and reducing intermediate steps when working with collections. These updates help C# developers focus on implementing functionality without getting bogged down by verbose syntax or unnecessary complexity. + ## .NET Libraries and Framework Updates .NET 9 introduces significant updates to its libraries and frameworks, focusing on enhancing data handling, security, and database integration. These improvements help developers create efficient and secure applications with minimal overhead, positioning .NET 9 as a powerful tool for modern development in 2025. From f40779e4d7fa6a01e1fbc36d9a0c5ae794809ae0 Mon Sep 17 00:00:00 2001 From: Daniel Bobadilla Date: Wed, 19 Mar 2025 11:25:00 -0300 Subject: [PATCH 03/14] fix spaces --- posts/DanielBCloudX/News-net9.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/posts/DanielBCloudX/News-net9.md b/posts/DanielBCloudX/News-net9.md index 39f43a21..83261bbc 100644 --- a/posts/DanielBCloudX/News-net9.md +++ b/posts/DanielBCloudX/News-net9.md @@ -1,7 +1,9 @@ # What's New in .NET 9: A Personal Take ## Introduction + .NET 9 is a Short-Term Support (STS) release, setting the stage for the highly anticipated Long-Term Support (LTS) version 10. Despite its short-term nature, .NET 9 introduces several exciting new features and enhancements that provide a glimpse into the future direction of the .NET ecosystem. In this article, I will showcase the latest updates in .NET 9. + ## Improved Performance and Scalability ### Key Performance Enhancements From ae838ea7448fee47dd51de211fd1012f2318a954 Mon Sep 17 00:00:00 2001 From: Daniel Bobadilla Date: Wed, 19 Mar 2025 11:27:32 -0300 Subject: [PATCH 04/14] fix add empty lines on headers --- posts/DanielBCloudX/News-net9.md | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/posts/DanielBCloudX/News-net9.md b/posts/DanielBCloudX/News-net9.md index 83261bbc..771af174 100644 --- a/posts/DanielBCloudX/News-net9.md +++ b/posts/DanielBCloudX/News-net9.md @@ -7,6 +7,7 @@ ## Improved Performance and Scalability ### Key Performance Enhancements + 1. **Adaptive Server GC (Garbage Collection):** .NET 9 introduces adaptive server garbage collection, which adjusts memory usage according to application demands. This optimizes performance in environments with fluctuating memory needs. 2. **Vectorization Improvements:** The runtime has been optimized to support new silicon architectures like Arm64 SVE and Intel AVX10. Loop vectorization and bounds check elimination accelerate workloads, while exceptions now run 50% faster. 3. **Optimized LINQ Operations:** Common LINQ operations, such as `Take` and `DefaultIfEmpty`, are now up to 10 times faster. This reduces the overhead of these operations, improving overall performance in data-intensive applications. @@ -27,17 +28,21 @@ - **Improvement:** 20% reduction in memory footprint. ## OpenAPI Support ans Swagger + Starting with .NET 9, Swagger is no longer included by default. Instead, developers are encouraged to use `Microsoft.AspNetCore.OpenApi` for API documentation. This change aims to provide a more streamlined and integrated experience for documenting APIs. ## GUID Enhancements in .NET 9 ### Guid V4 + The Guid type has been present in .NET from the very beginning, and a new Guid can be created using the `NewGuid()` method. This method generates a version 4 GUID following the UUID Version 4 specification in RFC 9562. GUIDs are globally unique, making them ideal for distributed systems. However, version 4 GUIDs are not sequential, which can lead to index fragmentation in relational databases. ### Guid V7 + .NET 9 introduces a new GUID implementation based on timestamp and randomness. A Guid can be created using the `CreateVersion7()` method, which produces sequential GUIDs. This sequentiality makes them more suitable for relational databases, alleviating fragmentation issues. Additionally, the Guid type now includes a new `Version` property, allowing you to check the version of the created GUID. ### Example of GUID Generation + ```csharp for (int i = 0; i < 5; i++) { @@ -69,6 +74,7 @@ Version 7 GUIDs are sequential, making them more suitable for use in relational V4: 52dc44f7-76e0-4689-a5e6-1a0f1c5f37a3 ## Advanced Runtime Features + .NET 9 introduces new runtime features that enhance performance and flexibility: **Feature Switches with Trimming:** Developers can now toggle features on or off at runtime, allowing for leaner builds tailored to specific deployment scenarios. This results in smaller application sizes and faster load times. @@ -78,6 +84,7 @@ V4: 52dc44f7-76e0-4689-a5e6-1a0f1c5f37a3 These runtime improvements not only enhance performance but also provide developers with greater control over application behavior and deployment. ## Cloud-Native Development with .NET Aspire + .NET 9 takes cloud-native development to the next level with the introduction of .NET Aspire, an all-in-one toolkit designed to simplify the creation of production-ready, observable cloud-native applications. With .NET Aspire, developers gain access to pre-configured templates and tools that accelerate the setup of cloud-native architectures. Whether deploying to Kubernetes, leveraging containerized services, or setting up observability pipelines, .NET Aspire ensures a smooth and efficient workflow. @@ -93,11 +100,13 @@ As cloud-native solutions continue to dominate the software development landscap In .NET 9, Microsoft has introduced a suite of tools and enhancements aimed at seamlessly integrating AI capabilities into applications while boosting developer productivity. ### AI Building Blocks + - The introduction of `Microsoft.Extensions.AI` and `Microsoft.Extensions.VectorData` provides a unified layer of C# abstractions for interacting with AI services, including large language models and vector stores. - These libraries facilitate the integration of AI functionalities, enabling developers to perform CRUD operations on vector stores and utilize vector and text search capabilities. - Additionally, .NET 9 includes new tensor types, such as `TensorPrimitives` and `Tensor`, which expand AI capabilities by enabling efficient encoding, manipulation, and computation of multi-dimensional data. ### Boosting Productivity + - To enhance developer productivity, .NET 9 introduces new LINQ methods like `CountBy` and `AggregateBy`. - The `CountBy` method groups elements by a specified key and returns an enumeration of key-value pairs, simplifying the process of counting occurrences without the need for intermediate groupings via `GroupBy`. - The `AggregateBy` method allows for aggregating data by a key selector, providing a more streamlined approach to data aggregation tasks. @@ -108,6 +117,7 @@ In .NET 9, Microsoft has introduced a suite of tools and enhancements aimed at s By integrating these AI building blocks and productivity enhancements, .NET 9 empowers developers to create intelligent, efficient, and maintainable applications, positioning them to meet the evolving demands of software development in 2025 and beyond. ## C# 13: Modernizing Code + C# 13 introduces features that make the language more expressive and reduce boilerplate code, streamlining the development process. **Object Initializers with Implicit Indexers:** This feature allows developers to initialize collections or dictionary-like objects with more concise syntax. Instead of explicitly specifying keys or indices, implicit indexers simplify the creation of objects with complex structures, making your code cleaner and easier to maintain. @@ -119,9 +129,11 @@ C# 13 introduces features that make the language more expressive and reduce boil These updates help C# developers focus on implementing functionality without getting bogged down by verbose syntax or unnecessary complexity. ## .NET Libraries and Framework Updates + .NET 9 introduces significant updates to its libraries and frameworks, focusing on enhancing data handling, security, and database integration. These improvements help developers create efficient and secure applications with minimal overhead, positioning .NET 9 as a powerful tool for modern development in 2025. ### System.Text.Json Improvements + System.Text.Json, the lightweight JSON library in .NET, receives key updates: - **JSON Schema Export:** Developers can now export JSON schemas directly from C# classes, simplifying validation and interoperability with APIs. @@ -131,11 +143,14 @@ System.Text.Json, the lightweight JSON library in .NET, receives key updates: These enhancements make System.Text.Json an even more robust tool for managing structured data in web applications and APIs. ### LINQ and Collections Additions + .NET 9 brings updates to LINQ and collections, making data handling simpler and more powerful: - **PriorityQueue Updates:** Enhanced functionality for `PriorityQueue` streamlines the management of prioritized tasks or items. - **New LINQ Methods:** Features like `CountBy` and `AggregateBy` reduce the complexity of common data aggregation tasks, allowing developers to write cleaner, more concise queries. These additions improve productivity when working with complex data sets, making LINQ and collections more versatile and intuitive. + ## Conclusion + .NET 9 focuses on reducing developers' workload by making applications faster and more efficient with minimal effort. It includes smarter memory management, enhanced performance, streamlined AI integration, and improved cross-platform compatibility. Key features like adaptive garbage collection, loop optimizations, and robust AI support with Microsoft.Extensions.AI and VectorData ensure that .NET 9 handles complex and frustrating tasks, allowing developers to concentrate on writing impactful code. From 18b990391e184e77ddf64632760a10aa7fe47727 Mon Sep 17 00:00:00 2001 From: Daniel Bobadilla Date: Wed, 19 Mar 2025 11:33:29 -0300 Subject: [PATCH 05/14] New line --- posts/DanielBCloudX/News-net9.md | 1 + 1 file changed, 1 insertion(+) diff --git a/posts/DanielBCloudX/News-net9.md b/posts/DanielBCloudX/News-net9.md index 771af174..c2241ee3 100644 --- a/posts/DanielBCloudX/News-net9.md +++ b/posts/DanielBCloudX/News-net9.md @@ -70,6 +70,7 @@ V7: 01917bbe-d973-7751-b8ba-bb73afab4a5d V7: 01917bbe-d973-7d36-9be0-2e6317919153 ``` + Version 7 GUIDs are sequential, making them more suitable for use in relational databases. You can also pass a `DateTimeOffset` when creating a new Guid to control the timestamp. V4: 52dc44f7-76e0-4689-a5e6-1a0f1c5f37a3 From 623a063a93fa73dc78c9a68ae02d9a9b2df5a240 Mon Sep 17 00:00:00 2001 From: Daniel Bobadilla Date: Wed, 19 Mar 2025 11:37:02 -0300 Subject: [PATCH 06/14] remove white spaces --- posts/DanielBCloudX/News-net9.md | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/posts/DanielBCloudX/News-net9.md b/posts/DanielBCloudX/News-net9.md index c2241ee3..ace3cbc0 100644 --- a/posts/DanielBCloudX/News-net9.md +++ b/posts/DanielBCloudX/News-net9.md @@ -86,13 +86,13 @@ These runtime improvements not only enhance performance but also provide develop ## Cloud-Native Development with .NET Aspire -.NET 9 takes cloud-native development to the next level with the introduction of .NET Aspire, an all-in-one toolkit designed to simplify the creation of production-ready, observable cloud-native applications. +.NET 9 takes cloud-native development to the next level with the introduction of .NET Aspire, an all-in-one toolkit designed to simplify the creation of production-ready, observable cloud-native applications. -With .NET Aspire, developers gain access to pre-configured templates and tools that accelerate the setup of cloud-native architectures. Whether deploying to Kubernetes, leveraging containerized services, or setting up observability pipelines, .NET Aspire ensures a smooth and efficient workflow. +With .NET Aspire, developers gain access to pre-configured templates and tools that accelerate the setup of cloud-native architectures. Whether deploying to Kubernetes, leveraging containerized services, or setting up observability pipelines, .NET Aspire ensures a smooth and efficient workflow. -The platform supports microservices, seamlessly integrating with Azure Functions to create lightweight, modular components that are easy to deploy, maintain, and scale. +The platform supports microservices, seamlessly integrating with Azure Functions to create lightweight, modular components that are easy to deploy, maintain, and scale. -Additionally, .NET Aspire simplifies serverless computing, allowing developers to focus on writing business logic while the platform handles scalability and availability automatically. +Additionally, .NET Aspire simplifies serverless computing, allowing developers to focus on writing business logic while the platform handles scalability and availability automatically. As cloud-native solutions continue to dominate the software development landscape in 2025, .NET Aspire positions .NET 9 as a powerful choice for developers looking to deliver scalable, resilient, and efficient applications. From 4535ae9944a34cd9eb89ccd2d0f58f881f39db11 Mon Sep 17 00:00:00 2001 From: Daniel Bobadilla Date: Wed, 19 Mar 2025 12:01:25 -0300 Subject: [PATCH 07/14] add markdown --- posts/DanielBCloudX/News-net9.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/posts/DanielBCloudX/News-net9.md b/posts/DanielBCloudX/News-net9.md index ace3cbc0..dfd2d44b 100644 --- a/posts/DanielBCloudX/News-net9.md +++ b/posts/DanielBCloudX/News-net9.md @@ -55,6 +55,7 @@ V4: 21a98165-af1e-477e-9dee-7eb9c79e6c77 V4: 7dbbf973-c55a-4917-87a5-95c16f356262 V4: b13892f2-334f-409a-b9de-d90dea21eed4**Output:** +```markdown ```csharp for (int i = 0; i < 5; i++) { @@ -92,7 +93,7 @@ With .NET Aspire, developers gain access to pre-configured templates and tools t The platform supports microservices, seamlessly integrating with Azure Functions to create lightweight, modular components that are easy to deploy, maintain, and scale. -Additionally, .NET Aspire simplifies serverless computing, allowing developers to focus on writing business logic while the platform handles scalability and availability automatically. +Additionally, .NET Aspire simplifies serverless computing, allowing developers to focus on writing business logic while the platform handles scalability and availability automatically. As cloud-native solutions continue to dominate the software development landscape in 2025, .NET Aspire positions .NET 9 as a powerful choice for developers looking to deliver scalable, resilient, and efficient applications. From 0c738d9fb52195aa2ab5aa9298431ab6fd239b9a Mon Sep 17 00:00:00 2001 From: Daniel Bobadilla Date: Wed, 19 Mar 2025 12:07:36 -0300 Subject: [PATCH 08/14] trailing spaces --- posts/DanielBCloudX/News-net9.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/posts/DanielBCloudX/News-net9.md b/posts/DanielBCloudX/News-net9.md index dfd2d44b..b72d532d 100644 --- a/posts/DanielBCloudX/News-net9.md +++ b/posts/DanielBCloudX/News-net9.md @@ -93,7 +93,7 @@ With .NET Aspire, developers gain access to pre-configured templates and tools t The platform supports microservices, seamlessly integrating with Azure Functions to create lightweight, modular components that are easy to deploy, maintain, and scale. -Additionally, .NET Aspire simplifies serverless computing, allowing developers to focus on writing business logic while the platform handles scalability and availability automatically. +Additionally, .NET Aspire simplifies serverless computing, allowing developers to focus on writing business logic while the platform handles scalability and availability automatically. As cloud-native solutions continue to dominate the software development landscape in 2025, .NET Aspire positions .NET 9 as a powerful choice for developers looking to deliver scalable, resilient, and efficient applications. From dfaa24c07dad5a6b41868b1f5648b7c854225471 Mon Sep 17 00:00:00 2001 From: Daniel Bobadilla Date: Wed, 19 Mar 2025 12:14:27 -0300 Subject: [PATCH 09/14] =?UTF-8?q?remove=20unncesary=20=20=C2=B4csharp=20ma?= =?UTF-8?q?rk?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- posts/DanielBCloudX/News-net9.md | 2 -- 1 file changed, 2 deletions(-) diff --git a/posts/DanielBCloudX/News-net9.md b/posts/DanielBCloudX/News-net9.md index b72d532d..b001e6a3 100644 --- a/posts/DanielBCloudX/News-net9.md +++ b/posts/DanielBCloudX/News-net9.md @@ -55,8 +55,6 @@ V4: 21a98165-af1e-477e-9dee-7eb9c79e6c77 V4: 7dbbf973-c55a-4917-87a5-95c16f356262 V4: b13892f2-334f-409a-b9de-d90dea21eed4**Output:** -```markdown -```csharp for (int i = 0; i < 5; i++) { var guid = Guid.CreateVersion7(); From 1cb72634f335d598eb2c4c24697a65e827a16c9a Mon Sep 17 00:00:00 2001 From: Daniel Bobadilla Date: Wed, 19 Mar 2025 12:33:44 -0300 Subject: [PATCH 10/14] fix title --- posts/DanielBCloudX/News-net9.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/posts/DanielBCloudX/News-net9.md b/posts/DanielBCloudX/News-net9.md index b001e6a3..5b57ba51 100644 --- a/posts/DanielBCloudX/News-net9.md +++ b/posts/DanielBCloudX/News-net9.md @@ -1,4 +1,4 @@ -# What's New in .NET 9: A Personal Take +# What's New in .NET 9 ## Introduction From cf7551bc67ee38fc2a260282edf48a0a4b8456ed Mon Sep 17 00:00:00 2001 From: Daniel Bobadilla Date: Thu, 20 Mar 2025 10:00:55 -0300 Subject: [PATCH 11/14] add image and header --- posts/DanielBCloudX/News-net9.md | 8 ++++++++ posts/DanielBCloudX/asset/upgrade-Net9.png | Bin 0 -> 42226 bytes 2 files changed, 8 insertions(+) create mode 100644 posts/DanielBCloudX/asset/upgrade-Net9.png diff --git a/posts/DanielBCloudX/News-net9.md b/posts/DanielBCloudX/News-net9.md index 5b57ba51..29a1c2ba 100644 --- a/posts/DanielBCloudX/News-net9.md +++ b/posts/DanielBCloudX/News-net9.md @@ -1,3 +1,11 @@ +--- +title: What's New in .NET 9 +published: false +description: this article will showcase the latest updates in .NET 9. +tags: 'one-tag, another-tag' +cover_image: ./assets/upgrade-Net9.png +--- + # What's New in .NET 9 ## Introduction diff --git a/posts/DanielBCloudX/asset/upgrade-Net9.png b/posts/DanielBCloudX/asset/upgrade-Net9.png new file mode 100644 index 0000000000000000000000000000000000000000..d2230abe9bbc65916e2a1714cb2f6ae9965c66ef GIT binary patch literal 42226 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%0AHMgV%#of4FV0gr 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 literal 0 HcmV?d00001 From 753a671e0c76e298cda03302a8acabb8fe67cf7f Mon Sep 17 00:00:00 2001 From: Daniel Bobadilla Date: Thu, 20 Mar 2025 10:05:45 -0300 Subject: [PATCH 12/14] remove title --- posts/DanielBCloudX/News-net9.md | 2 -- 1 file changed, 2 deletions(-) diff --git a/posts/DanielBCloudX/News-net9.md b/posts/DanielBCloudX/News-net9.md index 29a1c2ba..2e35c888 100644 --- a/posts/DanielBCloudX/News-net9.md +++ b/posts/DanielBCloudX/News-net9.md @@ -6,8 +6,6 @@ tags: 'one-tag, another-tag' cover_image: ./assets/upgrade-Net9.png --- -# What's New in .NET 9 - ## Introduction .NET 9 is a Short-Term Support (STS) release, setting the stage for the highly anticipated Long-Term Support (LTS) version 10. Despite its short-term nature, .NET 9 introduces several exciting new features and enhancements that provide a glimpse into the future direction of the .NET ecosystem. In this article, I will showcase the latest updates in .NET 9. From 7f88bbbdc88031008d5632a7133f10f15db79baf Mon Sep 17 00:00:00 2001 From: Daniel Bobadilla Date: Thu, 20 Mar 2025 10:37:53 -0300 Subject: [PATCH 13/14] change comment --- posts/DanielBCloudX/News-net9.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/posts/DanielBCloudX/News-net9.md b/posts/DanielBCloudX/News-net9.md index 2e35c888..2dd167cd 100644 --- a/posts/DanielBCloudX/News-net9.md +++ b/posts/DanielBCloudX/News-net9.md @@ -33,7 +33,7 @@ cover_image: ./assets/upgrade-Net9.png - **.NET 9.0:** 1.2 GB - **Improvement:** 20% reduction in memory footprint. -## OpenAPI Support ans Swagger +## OpenAPI Support and Swagger Starting with .NET 9, Swagger is no longer included by default. Instead, developers are encouraged to use `Microsoft.AspNetCore.OpenApi` for API documentation. This change aims to provide a more streamlined and integrated experience for documenting APIs. From 4badb7973bc9c46dfc6460a2dafd4b7270b0f45c Mon Sep 17 00:00:00 2001 From: Daniel Bobadilla Date: Thu, 20 Mar 2025 10:51:46 -0300 Subject: [PATCH 14/14] adjust image path --- .../{asset => assets}/upgrade-Net9.png | Bin 1 file changed, 0 insertions(+), 0 deletions(-) rename posts/DanielBCloudX/{asset => assets}/upgrade-Net9.png (100%) diff --git a/posts/DanielBCloudX/asset/upgrade-Net9.png b/posts/DanielBCloudX/assets/upgrade-Net9.png similarity index 100% rename from posts/DanielBCloudX/asset/upgrade-Net9.png rename to posts/DanielBCloudX/assets/upgrade-Net9.png