- Tests: Add
GenerativeNestedTypesTests— 5 tests for generative nested types: constructors, instance/static properties, instance methods inside nested classes - Refactor:
GetNestedTypes/GetMembersonProvidedTypeDefinitionnow usecanBindNestedTypefor consistent BindingFlags-aware filtering of nested types
- Tests: Add
GenerativeInheritanceTests— 5 tests for generative type inheritance: abstract base class, concrete derived classes, virtual method override dispatch verified at runtime
- Tests: Add
GenerativeMethodsTestscovering instance/static methods and method-count in generative types #505 - Tests: Add
GenerativeCustomAttributeTests— 5 regression tests for custom attribute encoding on types, methods, and properties (string, bool, enum arguments; multiple attributes per member)
- Bug fix: Fix
ProvidedTypeDefinition.Loggercreating a new delegate reference on each call #501 - Refactor/Performance: Convert
ILFieldDefs/ILEventDefs/ILPropertyDefsto concrete classes with lazyO(1)name-lookup caches #502 - Tests: Add
GenerativePropertiesTestscovering instance/static/read-write properties and name-lookup
- Performance: O(1) assembly-name dictionary lookup in
convTypeRef#493 - Performance: Avoid O(n²) allocations in
ILMethodDefsname index construction; use lazy caches inTargetTypeDefinitionforGetField/GetPropertyImpl/GetEvent#497 - Refactor: Add
save-based caching toGetField/GetEvent/GetNestedTypeonProvidedTypeDefinition; useDictionaryinILNestedExportedTypesAndForwarders#498 - CI: Add NuGet and FAKE build caching to CI workflows #495
- Bug fix: Fix
GetEnumUnderlyingType()to correctly handle non-Int32 enum underlying types #470 - Bug fix: Fix
decodeILCustomAttribDatato read correct byte-width for non-Int32 enum fixed arguments (ECMA-335) #475 - Bug fix: Fix generative delegate type support; implement
GetInterfaceonProvidedTypeDefinitionandTargetTypeDefinition#479 - Bug fix: Fix thread-safety races in
TargetTypeDefinitionmember-wrapper caches #482 - Bug fix: Fix
decodeILCustomAttribDatato resolveSystem.Typecustom attribute arguments (previously always returned null) - Performance: Cache member wrapper objects in
TargetTypeDefinitionto avoid repeated allocations #471 - Performance: Cache
FullName,BaseTypeandGetInterfaces()inTargetTypeDefinition#485 - Refactor: Simplify
mkCacheInt32/mkCacheGenericto useConcurrentDictionary#486 - CI: Update GitHub Actions from v1 to v4 #476
- Performance: Memoize
transTypeinAssemblyCompilerto reduce redundant type translation #443 - Performance: Cache
transTypeRefandtransMethRefin assembly compiler #457 - Bug fix: Fix custom attributes on nested erased types #432
- Bug fix: Fix
GetNestedTypeonTypeSymbol/ProvidedTypeSymbolfor generic provided types #458 - Bug fix: Fix mutable variable captures in
QuotationSimplifier— promote to ref cells #459 - New warning when all static parameters in a type provider are optional #428
- Documentation guide overhaul #455
- Add coverage tests and Coverage build target #442
- Update to .NET 8 SDK and toolchain #431
- Performance optimizations for design-time loading: lazy ILAssemblyRefs, optimize convTypeRef, inline isNull #417
- Reference assembly loading fixes: don't reload already-loaded assemblies
- Build fix for FX_NO_LOCAL_FILESYSTEM #404
- Performance optimizations #406, #411
- Fix typing corrections #414, #410
- Remove AutoOpen from ILTableName #412
- Remove warning about patter discard not allowed for union case that takes no data #401
- Update hardcoded units of measure #394
- Fix MakeGenericType fallback #393
- Remove unnecessary pattern discards #392
- Fixes to allow TPs to have references, also notes on using the nuget package #389
- Building with .NET 8 compiler and new FAKE and Paket #409
- FSharpLint as .NET tool #398
- Fix Ubuntu builds #413
- Fix template .NET version in global.json
- Fix template paket version
- Allow both netstandard2.0 and netstandard2.1
- Updated packages
- Moved to netstandard2.1
- Nuget includes ProvidedTypes.fs/fsi source in "src/"
- Template migrated to .NET Core 3.1
- Addition of template pack
- Many bug fixes
- Many improvemnts to the implementation of type mapping
- Remove Default on ProvidedMeasureBuilder and make members static
- Config parameter new passed to
TypeProviderForNamespaces, i.e.inherit TypeProviderForNamespaces(config) - ProvidedTypesContext now internal to
TypeProviderForNamespaces. You can access it usingthis.TargetContextin theTypeProviderForNamespacesobject - Calls such as
ctxt.ProvidedTypeDefinition(...)become justProvidedTypeDefinitiononce again ProvidedLiteralField-->ProvidedField.Literal- Bug fixes to context translation based on further testing
ProvidedTypesContext.MakeGenericType-->ProvidedTypeBuilder.MakeGenericTypeProvidedTypesContext.MakeGenericMethod-->ProvidedTypeBuilder.MakeGenericMethod- More internal consistency checking of translation, better diagnostics
- Some getters removed from public API.
IsImplicitCtor-->IsImplicitConstructorProvidedTypeDefinition.LoggerremovedTryBindAssembly*-->TryBindTargetAssembly*RegisterGenerated-->RegisterGeneratedTargetAssemblytp.TargetContextadded to access the target context of referenced assemblies
- Cross-targeting for generative type providers, and reimplement binary reader
-
All type providers now use a ProvidedTypesContext, e.g. let ctxt = ProvidedTypesContext.Create(config) ... let myType = ctxt.ProvidedTypeDefinition(asm, ns, "MyType", Some typeof) ... There are no more direct constructors for ProvidedTypeDefinition etc.
-
ProvidedTypesContext.Create now takes a flag isForGenerated. It should be set to true for generative type providers
-
IsStaticMethod=truebecomesisStatic=trueand some other similar naming changes -
Direct setters such as prop.GetterCode <- ... are removed in favour of optional parameters
getterCode=.... You must specify getterCode as a parameter -
Enables use as part of .NET Core execution of the F# compiler by extending TypeDelegator instead of Type. This needs to be more fully tested but repo itself now compiles as both .NET Standard 2.0 and .NET Framework, and passes tests as both .NET CoreApp 2.0 and .NET Framework 4.6.1
-
Puts everything into one file ProvidedTypes.fs and ProvidedTypes.fsi. This file is large but this approach makes it very easy for people writing existing type providers to update (after accounting for changes in the ProvidedTypes API)
- Mono 5 support
- Parameter names unification
- Updates for cross-targeting of type providers
- Remove folders
- Fix nuget package
- Fix build on some versions of .net
- Fixed utterly broken indentation in ProvidedTypes.md
- Add compile step to build as sanity check
- Add targets file to help PCL builds
- Latest updates merged in, first FsProjects based release
- Make sure files are added in the right order by putting them in a sub folder.
- Initial release