You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
* Trim trailing whitespaces
* Match raw with rendered
* Delete extra asterisks and |
* Update ELT Hooks - tail calls.md
Co-authored-by: Jan Kotas <[email protected]>
Copy file name to clipboardexpand all lines: SECURITY.md
+2-2
Original file line number
Diff line number
Diff line change
@@ -6,8 +6,8 @@ The .NET Core and ASP.NET Core support policy, including supported versions can
6
6
7
7
## Reporting a Vulnerability
8
8
9
-
Security issues and bugs should be reported privately to the Microsoft Security Response Center (MSRC), either by emailing [email protected] or via the portal at https://msrc.microsoft.com.
10
-
You should receive a response within 24 hours. If for some reason you do not, please follow up via email to ensure we received your
9
+
Security issues and bugs should be reported privately to the Microsoft Security Response Center (MSRC), either by emailing [email protected] or via the portal at https://msrc.microsoft.com.
10
+
You should receive a response within 24 hours. If for some reason you do not, please follow up via email to ensure we received your
11
11
original message. Further information, including the MSRC PGP key, can be found in the [MSRC Report an Issue FAQ](https://www.microsoft.com/en-us/msrc/faqs-report-an-issue).
12
12
13
13
Reports via MSRC may qualify for the .NET Core Bug Bounty. Details of the .NET Core Bug Bounty including terms and conditions are at [https://aka.ms/corebounty](https://aka.ms/corebounty).
- MostanyotherchangeshavethepotentialtochangetheIL, whichshouldnotbenecessaryforthefeature. Inparticular, it'scommonfor `?`sondereferencestosneakin, e.g. changing `someVar.SomeMethod()` to `someVar?.SomeMethod()`; thatisachangetotheIL, andshouldonlybeemployedwhenthere'sanactualknownbugthat'simportanttofix, asotherwisewe'reincurringunnecessarycost. Similarly, it'seasytoaccidentallyadd `?` tovaluetypes, whichhasasignificantimpact, changingthe `T` toa `Nullable<T>` andshouldbeavoided.
119
119
120
120
- Any `!`saddedthatshouldhavebeenunnecessaryandarerequiredduetoeitheracompilerissueorduetolackofexpressibilityaboutannotationsshouldhavea `// TODO-NULLABLE: http://link/to/relevant/issue` comment added on the same line.
Copy file name to clipboardexpand all lines: docs/coding-guidelines/breaking-change-definitions.md
+5-5
Original file line number
Diff line number
Diff line change
@@ -6,7 +6,7 @@ Behavioral Change
6
6
7
7
A behavioral change represents changes to the behavior of a member. A behavioral change may including throwing a new exception, adding or removing internal method calls, or alternating the way in which a return value is calculated. Behavioral changes can be the hardest type of change to categorize as acceptable or not - they can be severe in impact, or relatively innocuous.
8
8
9
-
Binary Compatibility
9
+
Binary Compatibility
10
10
--------------------
11
11
12
12
Refers to the ability of existing consumers of an API to be able to use a newer version without recompilation. By definition, if an assembly's public signatures have been removed, or altered so that consumers can no longer access the same interface exposed by the assembly, the change is said to be a _binary incompatible change_.
@@ -16,19 +16,19 @@ Source Compatibility
16
16
17
17
Refers to the ability of existing consumers of an API to recompile against a newer version without any source changes. By definition, if a consumer needs to make changes to its code in order for it to build successfully against a newer version of an API, the change is said to be a _source incompatible change_.
18
18
19
-
Design-Time Compatibility
19
+
Design-Time Compatibility
20
20
-------------------------
21
21
22
22
_Design-time compatibility_ refers to preserving the design-time experience across versions of Visual Studio and other design-time environments. This can involve details around the UI of the designer, but by far the most interesting design-time compatibility is project compatibility. A potential project (or solution), must be able to be opened, and used on a newer version of a designer.
23
23
24
-
Backwards Compatibility
24
+
Backwards Compatibility
25
25
-----------------------
26
26
27
-
_Backwards compatibility_ refers to the ability of an existing consumer of an API to run against, and behave in the same way against a newer version. By definition, if a consumer is not able to run, or behaves differently against the newer version of the API, then the API is said to be _backwards incompatible_.
27
+
_Backwards compatibility_ refers to the ability of an existing consumer of an API to run against, and behave in the same way against a newer version. By definition, if a consumer is not able to run, or behaves differently against the newer version of the API, then the API is said to be _backwards incompatible_.
28
28
29
29
Changes that affect backwards compatibility are strongly discouraged. All alternates should be actively considered, since developers will, by default, expect backwards compatibility in newer versions of an API.
30
30
31
-
Forwards Compatibility
31
+
Forwards Compatibility
32
32
----------------------
33
33
34
34
_Forwards compatibility_ is the exact reverse of backwards compatibility; it refers to the ability of an existing consumer of an API to run against, and behave in the way against a _older_ version. By definition, if a consumer is not able to run, or behaves differently against an older version of the API, then the API is said to be _forwards incompatible_.
Copy file name to clipboardexpand all lines: docs/coding-guidelines/breaking-change-rules.md
+4-4
Original file line number
Diff line number
Diff line change
@@ -19,14 +19,14 @@ Breaking Change Rules
19
19
### Property, Field, Parameter and Return Values
20
20
✓**Allowed**
21
21
* Increasing the range of accepted values for a property or parameter if the member _is not_`virtual`
22
-
22
+
23
23
Note that the range can only increase to the extent that it does not impact the static type. e.g. it is OK to remove `if (x > 10) throw new ArgumentOutOfRangeException("x")`, but it is not OK to change the type of `x` from `int` to `long` or `int?`.
24
24
25
25
* Returning a value of a more derived type for a property, field, return or `out` value
26
26
27
27
Note, again, that the static type cannot change. e.g. it is OK to return a `string` instance where an `object` was returned previously, but it is not OK to change the return type from `object` to `string`.
28
28
29
-
✗**Disallowed**
29
+
✗**Disallowed**
30
30
* Increasing the range of accepted values for a property or parameter if the member _is_`virtual`
31
31
32
32
This is breaking because any existing overridden members will now not function correctly for the extended range of values.
@@ -135,7 +135,7 @@ Breaking Change Rules
135
135
So long as it does not introduce any new abstract members or change the semantics or behavior of existing members, a type can be introduced into a hierarchy between two existing types. For example, between .NET Framework 1.1 and .NET Framework 2.0, we introduced `DbConnection` as a new base class for `SqlConnection` which previously derived from `Component`.
136
136
137
137
* Adding an interface implementation to a type
138
-
138
+
139
139
This is acceptable because it will not adversely affect existing clients. Any changes which could be made to the type being changed in this situation, will have to work within the boundaries of acceptable changes defined here, in order for the new implementation to remain acceptable.
140
140
Extreme caution is urged when adding interfaces that directly affect the ability of the designer or serializer to generate code or data, that cannot be consumed down-level. An example is the `ISerializable` interface.
141
141
Care should be taken when the interface (or one of the interfaces that this interface requires) has default interface implementations for other interface methods. The default implementation could conflict with other default implementations in a derived class.
@@ -205,7 +205,7 @@ Breaking Change Rules
205
205
206
206
* Adding an overload that precludes an existing overload, and defines different behavior
207
207
208
-
This will break existing clients that were bound to the previous overload. For example, if you have a class that has a single version of a method that accepts a `uint`, an existing consumer will
208
+
This will break existing clients that were bound to the previous overload. For example, if you have a class that has a single version of a method that accepts a `uint`, an existing consumer will
209
209
successfully bind to that overload, if simply passing an `int` value. However, if you add an overload that accepts an `int`, recompiling or via late-binding the application will now bind to the new overload. If different behavior results, then this is a breaking change.
210
210
211
211
* Moving an exposed field onto a class higher in the hierarchy tree of the type from which it was removed
Copy file name to clipboardexpand all lines: docs/coding-guidelines/interop-guidelines.md
+5-5
Original file line number
Diff line number
Diff line change
@@ -58,7 +58,7 @@ internal static partial class Interop
58
58
```
59
59
60
60
As shown above, platforms may be additive, in that an assembly may use functionality from multiple folders, e.g. System.IO.FileSystem's Linux build will use functionality both from Unix (common across all Unix systems) and from Linux (specific to Linux and not available across non-Linux Unix systems).
61
-
61
+
62
62
- Interop.*.cs files are created in a way such that every assembly consuming the file will need every DllImport it contains.
63
63
- If multiple related DllImports will all be needed by every consumer, they may be declared in the same file, named for the functionality grouping, e.g. Interop.IOErrors.cs.
64
64
- Otherwise, in the limit (and the expected case for most situations) each Interop.*.cs file will contain a single DllImport and associated interop types (e.g. the structs used with that signature) and helper wrappers, e.g. Interop.strerror.cs.
@@ -104,7 +104,7 @@ internal static partial class Interop // contents of Common\src\Interop\Windows\
104
104
105
105
```
106
106
(Note that this will likely result in some extra constants defined in each assembly that uses interop, which minimally violates one of the goals, but it's very minimal.)
107
-
107
+
108
108
- .csproj project files then include the interop code they need, e.g.
@@ -170,10 +170,10 @@ To address this, we're moving to a model where all UNIX interop from dotnet/runt
170
170
171
171
Guidelines for shim C++ API:
172
172
173
-
- Keep them as "thin"/1:1 as possible.
174
-
- We want to write the majority of code in C#.
173
+
- Keep them as "thin"/1:1 as possible.
174
+
- We want to write the majority of code in C#.
175
175
- Never skip the shim and P/Invoke directly to the underlying platform API. It's easy to assume something is safe/guaranteed when it isn't.
176
-
- Don't cheat and take advantage of coincidental agreement between one flavor's ABI and the shim's ABI.
176
+
- Don't cheat and take advantage of coincidental agreement between one flavor's ABI and the shim's ABI.
177
177
- Use PascalCase in a style closer to Win32 than libc.
178
178
- If an export point has a 1:1 correspondence to the platform API, then name it after the platform API in PascalCase (e.g. stat -> Stat, fstat -> FStat).
179
179
- If an export is not 1:1, then spell things out as we typically would in dotnet/runtime code (i.e. don't use abbreviations unless they come from the underlying API.
Copy file name to clipboardexpand all lines: docs/design/coreclr/botr/shared-generics.md
+1-1
Original file line number
Diff line number
Diff line change
@@ -47,7 +47,7 @@ This feature is currently only supported for instantiations over reference types
47
47
48
48
The dictionary used by any given generic method is pointed at by the `m_pPerInstInfo` field on the `InstantiatedMethodDesc` structure of that method. It's a direct pointer to the contents of the generic dictionary data.
49
49
50
-
On generic types, there's an extra level of indirection: the `m_pPerInstInfo` field on the `MethodTable` structure is a pointer to a table of dictionaries, and each entry in that table is a pointer to the actual generic dictionary data. This is because types have inheritance, and derived generic types inherit the dictionaries of their base types.
50
+
On generic types, there's an extra level of indirection: the `m_pPerInstInfo` field on the `MethodTable` structure is a pointer to a table of dictionaries, and each entry in that table is a pointer to the actual generic dictionary data. This is because types have inheritance, and derived generic types inherit the dictionaries of their base types.
0 commit comments