# ChangeLog: v1.3.78

* [CHANGELOG.md](https://github.com/swc-project/swc/blob/6e37fd2932d4ab403ec47143db04bc3fa2dddecb/CHANGELOG.md#1378---2023-08-17)
    
* [Full ChangeLog](https://github.com/swc-project/swc/milestone/435?closed=1)
    

---

This version includes many fixes.

* [#7820](https://github.com/swc-project/swc/pull/7820): A bug of `ascii_only` is fixed.
    

Code generation for

```javascript
{
	Ì: "\u0069\u0307\u0300",
}
```

is fixed.

* [#7788](https://github.com/swc-project/swc/pull/7788): A bug of a rest pattern is fixed.
    

Previously, if the input code contains an array with two or more object patterns with a rest pattern in it, SWC produced an invalid code.

```javascript
function fn([
    { foo, ...flags },
    { bar }
]) {
    console.log(flags.rangeChanged);
}
```

* [#7773](https://github.com/swc-project/swc/pull/7773): A bug of SWC minifier copying template literals is fixed.
    

This bug was related to careless logic in *pure* string optimizer. Now SWC minifier tracks status of `cooked` field correctly.

* [#7804](https://github.com/swc-project/swc/pull/7804): Sequential inliner now aborts on un-optimizable code.
    

Due to very complex situation, the SWC minifier had broke

```javascript
let a = 1

function foo(g) {
  var t = g()
  a += t
}

function g() {
  a = 2
  return 1
}

foo(g)

console.log(a)
```

but it's now fixed.

* [#7823](https://github.com/swc-project/swc/pull/7823): Inliner now preserves more analysis data while inlining.
    

Previously the code below was broken because the SWC minifier didn't propagate `used_as_ref` flag while inlining an identifier into an identifier.

```javascript
const Blocks = {
    Block1: () => {
        return <>'Block1xx'</>;
    },
    Block2: () => {
        return <>'Block2xx'</>;
    },
    Layout1: () => {
        // In the final code, Blocks does not have a 'Block1' key
        return RenderLayout(Blocks, ['Block1'])
    }
};

function RenderLayout(Comps, items) {
    return items.map((item) => {
        return Comps[item]
    })
}

export function render() {
    return <Blocks.Layout1 />
}
```
