<commit_before># SwiftGen CHANGELOG

---

## Develop

### Breaking Changes

* As Swift 3 is officially no longer maintained, we're deprecating the Swift 3 templates. The templates will remain available until the next major version of SwiftGen, but we can no longer guarantee that there won't be issues with the generated code.  
  [<NAME>](https://github.com/djbe)
  [#601](https://github.com/SwiftGen/SwiftGen/pull/601)

### New Features

* Each command now accepts an `options` dictionary, with which you can set internal parser settings to change its behaviour. See the commands' specific documentation for available options.  
  [<NAME>](https://github.com/djbe)
  [#587](https://github.com/SwiftGen/SwiftGen/pull/587)
  [#597](https://github.com/SwiftGen/SwiftGen/pull/597)
* Strings: the parser now accepts a `separator` option, used to split keys into structured components. The default separator remains `.`. For more information, check the [command's documentation](Documentation/Commands/strings.md#customization).  
  [<NAME>](https://github.com/djbe)
  [#576](https://github.com/SwiftGen/SwiftGen/issue/576)
  [#588](https://github.com/SwiftGen/SwiftGen/pull/588)
* Core Data: the built-in templates now support an optional `extraImports` parameter. With this you can provide a list of modules to additionally import, for when you have properties with types from external modules. For more information, check the [template's documentation](Documentation/templates/coredata/swift4.md#customization).  
  [<NAME>](https://github.com/djbe)
  [#591](https://github.com/SwiftGen/SwiftGen/issue/591)
  [#592](https://github.com/SwiftGen/SwiftGen/pull/592)
* Core Data: the built-in templates now support `RawRepresentable` attributes (such as `enum`, `OptionSet`, …). They'll check the "User Info" of an attribute for a `RawType` key, which should be set to the type name you want to use for that attribute. To avoid optional attributes, you can also add the `unwrapOptional` user info key. For more information, check the [template's documentation](Documentation/templates/coredata/swift4.md#userinfo-keys).  
  [<NAME>](https://github.com/djbe)
  [#566](https://github.com/SwiftGen/SwiftGen/issue/566)
  [#609](https://github.com/SwiftGen/SwiftGen/issue/609)
  [#593](https://github.com/SwiftGen/SwiftGen/pull/593)
  [#610](https://github.com/SwiftGen/SwiftGen/pull/610)
* Strings: the built-in templates now accept a parameter for customizing the localization function.  
  [<NAME>](https://github.com/StevenMagdy)
  [426](https://github.com/SwiftGen/SwiftGen/issues/426)
  [468](https://github.com/SwiftGen/SwiftGen/issues/468)
  [573](https://github.com/SwiftGen/SwiftGen/pull/573)

### Bug Fixes

* XCAssets: improved the performance for color assets by caching the resolved colors.  
  [<NAME>](https://github.com/djbe)
  [#578](https://github.com/SwiftGen/SwiftGen/issue/578)
  [#589](https://github.com/SwiftGen/SwiftGen/pull/589)
* Core Data: `entityName` is now correctly a `class var` instead of a `class func`.  
  [<NAME>](https://github.com/djbe)
  [#590](https://github.com/SwiftGen/SwiftGen/pull/590)

### Internal Changes
<commit_msg>Changelog entry<commit_after># SwiftGen CHANGELOG

---

## Develop

### Breaking Changes

* As Swift 3 is officially no longer maintained, we're deprecating the Swift 3 templates. The templates will remain available until the next major version of SwiftGen, but we can no longer guarantee that there won't be issues with the generated code.  
  [<NAME>](https://github.com/djbe)
  [#601](https://github.com/SwiftGen/SwiftGen/pull/601)

### New Features

* Each command now accepts an `options` dictionary, with which you can set internal parser settings to change its behaviour. See the commands' specific documentation for available options.  
  [<NAME>](https://github.com/djbe)
  [#587](https://github.com/SwiftGen/SwiftGen/pull/587)
  [#597](https://github.com/SwiftGen/SwiftGen/pull/597)
* Strings: the parser now accepts a `separator` option, used to split keys into structured components. The default separator remains `.`. For more information, check the [command's documentation](Documentation/Commands/strings.md#customization).  
  [<NAME>](https://github.com/djbe)
  [#576](https://github.com/SwiftGen/SwiftGen/issue/576)
  [#588](https://github.com/SwiftGen/SwiftGen/pull/588)
* Core Data: the built-in templates now support an optional `extraImports` parameter. With this you can provide a list of modules to additionally import, for when you have properties with types from external modules. For more information, check the [template's documentation](Documentation/templates/coredata/swift4.md#customization).  
  [<NAME>](https://github.com/djbe)
  [#591](https://github.com/SwiftGen/SwiftGen/issue/591)
  [#592](https://github.com/SwiftGen/SwiftGen/pull/592)
* Core Data: the built-in templates now support `RawRepresentable` attributes (such as `enum`, `OptionSet`, …). They'll check the "User Info" of an attribute for a `RawType` key, which should be set to the type name you want to use for that attribute. To avoid optional attributes, you can also add the `unwrapOptional` user info key. For more information, check the [template's documentation](Documentation/templates/coredata/swift4.md#userinfo-keys).  
  [<NAME>](https://github.com/djbe)
  [#566](https://github.com/SwiftGen/SwiftGen/issue/566)
  [#609](https://github.com/SwiftGen/SwiftGen/issue/609)
  [#593](https://github.com/SwiftGen/SwiftGen/pull/593)
  [#610](https://github.com/SwiftGen/SwiftGen/pull/610)
* Strings: the built-in templates now accept a parameter for customizing the localization function.  
  [<NAME>](https://github.com/StevenMagdy)
  [426](https://github.com/SwiftGen/SwiftGen/issues/426)
  [468](https://github.com/SwiftGen/SwiftGen/issues/468)
  [573](https://github.com/SwiftGen/SwiftGen/pull/573)

### Bug Fixes

* XCAssets: improved the performance for color assets by caching the resolved colors.  
  [<NAME>](https://github.com/djbe)
  [#578](https://github.com/SwiftGen/SwiftGen/issue/578)
  [#589](https://github.com/SwiftGen/SwiftGen/pull/589)
* Core Data: `entityName` is now correctly a `class var` instead of a `class func`.  
  [<NAME>](https://github.com/djbe)
  [#590](https://github.com/SwiftGen/SwiftGen/pull/590)
* Strings: we now correctly generate the type `Any` (instead of `String`) for `%@` placeholders.  
  [<NAME>](https://github.com/djbe)
  [620](https://github.com/SwiftGen/SwiftGen/issues/620)

### Internal Changes

{'fraction_non_alphanumeric': 0.13978494623655913, 'fraction_numerical': 0.03348694316436252, 'mean_word_length': 4.746690203000883, 'pattern_counts': {'":': 0, '<': 20, '<?xml version=': 0, '>': 20, 'https://': 52, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 2, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '286662', 'n_tokens_mistral': 2224, 'n_tokens_neox': 1965, 'n_words': 558}