Skip to content

Upgrading ffigen 15 to 16

Breaking15.0.0 → 16.1.0Breaking2New4Changed3Fixed6

BreakingUpgrade verdict

2 breaking changes.

  • By default, transitively included Objective-C interfaces are now generated as stubs rather than fully pulled in. The protocols and categories flags default to false and true respectively, matching previous behavior.
  • Objective-C category methods are now generated as Dart extension methods. Instance methods work the same if the extensions are imported, but static methods move from the interface to the category.
2 items need code or config changes
Breaking2
include-transitive-objc-interfaces now defaults to false, generating transitive deps as stubs instead of pulling them all in.
include-transitive-objc-interfacesinclude-transitive-objc-protocolsinclude-transitive-objc-categories
Generates ObjC categories as Dart extension methods instead of inserting their methods into the interface.
MyInterface.staticMethodMyCategory.staticMethodobjc-categories

Generated by DepDelta from published Dart source. Not mixed with prose notes.

  • added: class DeclarationFilters: abstract interface
  • added: class ExternalVersions
  • added: class Versions
  • added: ctor DeclarationFilters({ bool Function(Declaration declaration)? shouldInclude, bool Function(Declaration declaration)? shouldIncludeSymbolAddress, String Function(Declaration declaration)? rename, String Function(Declaration declaration, String member)? renameMember, bool Function(Declaration declaration, String member)? shouldIncludeMember, })
  • added: ctor ExternalVersions({this.ios, this.macos})
  • added: ctor Versions({this.min, this.max})
  • added: enum Language
  • added: field ExternalVersions.ios: final Versions?
  • added: field ExternalVersions.macos: final Versions?
  • added: field Versions.max: final Version?
  • added: field Versions.min: final Version?
  • added: get Config.includeTransitiveObjCCategories: bool
  • added: get Config.includeTransitiveObjCInterfaces: bool
  • added: get Config.includeTransitiveObjCProtocols: bool
  • added: get Config.objcCategories: DeclarationFilters
  • added: get YamlConfig.includeTransitiveObjCCategories: bool
  • added: get YamlConfig.includeTransitiveObjCInterfaces: bool
  • added: get YamlConfig.includeTransitiveObjCProtocols: bool
  • added: get YamlConfig.objcCategories: DeclarationFilters
  • added: member Language.c
  • added: member Language.objc
  • added: method DeclarationFilters.rename(Declaration declaration): String
  • added: method DeclarationFilters.renameMember(Declaration declaration, String member): String
  • added: method DeclarationFilters.shouldInclude(Declaration declaration): bool
  • added: method DeclarationFilters.shouldIncludeMember(Declaration declaration, String member): bool
  • added: method DeclarationFilters.shouldIncludeSymbolAddress(Declaration declaration): bool
  • added: static field DeclarationFilters.excludeAll: final
  • added: static field DeclarationFilters.includeAll: final
  • added: static method DeclarationFilters.include(Set<String> names): DeclarationFilters