|
| 1 | +--- |
| 2 | +title:"2025-07-04: ECMAScript 2025, Rspack 1.4, Deno 2.4, Bundle Size 개선" |
| 3 | +author:"azu" |
| 4 | +translator:rewrite0w0 |
| 5 | +layout:post |
| 6 | +date:2025-07-04T02:54:31.532Z |
| 7 | +category:JSer |
| 8 | +tags: |
| 9 | + -React |
| 10 | + -css |
| 11 | + -rspack |
| 12 | + -Chrome |
| 13 | + -ECMAScript |
| 14 | +--- |
| 15 | + |
| 16 | +JSer.info#740 - ECMAScript 2025 정식 출시했습니다. |
| 17 | + |
| 18 | +-[Ecma International approves new standards - Ecma International](https://ecma-international.org/news/ecma-international-approves-new-standards-11/) |
| 19 | +-[Release ES2025 · tc39/ecma262](https://github.com/tc39/ecma262/releases/tag/es2025) |
| 20 | + |
| 21 | +ECMAScript 2025가 Ecma International의 General Assembly에서 승인되어, 정식 출시했습니다. |
| 22 | +ECMAScript 2025에서는, 다음과 같은 사양이 추가됩니다. |
| 23 | + |
| 24 | +- Iterator helpers: iterator 대상 map, filter, reduce 메서드 |
| 25 | +- Set.prototype 메서드: Set 대상 집합 연산 메서드 |
| 26 | +- JSON modules import: JSON 모듈을 import 하는 기능과 import attributes 사양 |
| 27 | +- RegExp.escape 메서드: 정규표현 에스케이프 하기 위한 메서드 |
| 28 | +- 정규표현 첨자 플래그: 정규표현에서 인라인으로 modifier flags를 유효/무효하는 구문 추가 |
| 29 | +- Promise.try 메서드: Promise 반환할 지 어떨지 모를 함수를 호출하고, 결과를 늘 Promise으로 하는 메서드 |
| 30 | +- Float16Array: Float16 다루는 TypedArray 자료형 |
| 31 | + |
| 32 | +--- |
| 33 | + |
| 34 | +Rspack 1.4 출시했습니다. |
| 35 | + |
| 36 | +-[Announcing Rspack 1.4 - Rspack](https://rspack.rs/blog/announcing-1-4) |
| 37 | + |
| 38 | +Wasm 이용 가능한 브라우저 환경에서 실행 지원이 추가되어, bundle size 개선도 있습니다. |
| 39 | +기본적으로 Incremental build가 유효화되어 있고, 실험적으로 CssChunkingPlugin 추가, MultiCompiler에서 lazy compilation 지원 기능 강화가 포함됩니다. |
| 40 | +또한, Perfetto 기반 성능 분석 도구도 추가되었습니다. |
| 41 | + |
| 42 | +--- |
| 43 | + |
| 44 | +Deno 2.4가 출시되어,`deno bundle` 명령어가 부활합니다. |
| 45 | + |
| 46 | +-[Deno 2.4: deno bundle is back | Deno](https://deno.com/blog/v2.4) |
| 47 | + |
| 48 | +이전에 삭제된`deno bundle` 명령어가 부활, 텍스트`byte` import 기능과 OpenTelemetry 안정화가 있습니다. |
| 49 | +`--preload` 플래그 추가,`deno update` 명령어 추가, package.json의 conditional exports 지원, 개발 체험 향상을 위한 많은 기능 추가가 있습니다. |
| 50 | + |
| 51 | +--- |
| 52 | + |
| 53 | +{% include inline-support.html %} |
| 54 | + |
| 55 | +--- |
| 56 | + |
| 57 | +<h1class="site-genre">헤드라인</h1> |
| 58 | + |
| 59 | +--- |
| 60 | + |
| 61 | +##Announcing Rspack 1.4 - Rspack |
| 62 | + |
| 63 | +[rspack.rs/blog/announcing-1-4](https://rspack.rs/blog/announcing-1-4"Announcing Rspack 1.4 - Rspack") |
| 64 | + |
| 65 | +<pclass="jser-tags jser-tag-icon"><spanclass="jser-tag">rspack</span> <spanclass="jser-tag">ReleaseNote</span></p> |
| 66 | + |
| 67 | +Rspack 1.4 출시. |
| 68 | +Wasm 이용한 브라우저 환경에서 실행 지원, bundle size 개선. |
| 69 | +기본적으로 Incremental build 유효화. |
| 70 | +실험적인 CssChunkingPlugin 추가, MultiCompiler에서 lazy compilation 지원,`useInputFileSystem` 옵션 지원. |
| 71 | +Perfetto 기반 성능 분석 도구, Zod v4으로 업데이트 |
| 72 | + |
| 73 | +--- |
| 74 | + |
| 75 | +##Chrome 139 beta | Blog | Chrome for Developers |
| 76 | + |
| 77 | +[developer.chrome.com/blog/chrome-139-beta?hl=en](https://developer.chrome.com/blog/chrome-139-beta?hl=en"Chrome 139 beta | Blog | Chrome for Developers") |
| 78 | + |
| 79 | +<pclass="jser-tags jser-tag-icon"><spanclass="jser-tag">Chrome</span> <spanclass="jser-tag">ReleaseNote</span></p> |
| 80 | + |
| 81 | +Chrome 139 beta 출시. |
| 82 | +CSS에서,`var()`/`attr()` 단축 평가 지원,`caret-animation`/`corner-shape`/CSS Custom Functions 지원. |
| 83 | +WHATWG 사양과 맞춰서`+json`의 JSON MIME type 지원. |
| 84 | +Origin trials에서 Prompt API, WebGPU Compatibility mode 추가. |
| 85 | +macOS 11 지원 종료, ISO-2022-JP 자동 검출 삭제 |
| 86 | + |
| 87 | +-[Intent to Ship: Spec-compliant JSON MIME type detection](https://groups.google.com/a/chromium.org/g/blink-dev/c/-lZFLXH7_Y8/m/ZzgLXc91AQAJ"Intent to Ship: Spec-compliant JSON MIME type detection") |
| 88 | + |
| 89 | +--- |
| 90 | + |
| 91 | +##Ecma International approves new standards - Ecma International |
| 92 | + |
| 93 | +[ecma-international.org/news/ecma-international-approves-new-standards-11/](https://ecma-international.org/news/ecma-international-approves-new-standards-11/"Ecma International approves new standards - Ecma International") |
| 94 | + |
| 95 | +<pclass="jser-tags jser-tag-icon"><spanclass="jser-tag">ECMAScript</span> <spanclass="jser-tag">news</span></p> |
| 96 | + |
| 97 | +ECMAScript 2025가 Ecma의 GA에서 승인되어 정식 출시. |
| 98 | + |
| 99 | +-[Release ES2025 · tc39/ecma262](https://github.com/tc39/ecma262/releases/tag/es2025"Release ES2025 · tc39/ecma262") |
| 100 | + |
| 101 | +--- |
| 102 | + |
| 103 | +##Release 0.14.0 | StyleX |
| 104 | + |
| 105 | +[stylexjs.com/blog/v0.14.0](https://stylexjs.com/blog/v0.14.0"Release 0.14.0 | StyleX") |
| 106 | + |
| 107 | +<pclass="jser-tags jser-tag-icon"><spanclass="jser-tag">React</span> <spanclass="jser-tag">css</span> <spanclass="jser-tag">library</span></p> |
| 108 | + |
| 109 | +StyleX v0.14.0 출시. |
| 110 | +`viewTransitionClass` API 추가, lint에`validImports` 옵션 추가. |
| 111 | +파괴적 변경으로 스타일을 머지할 때 전략 설정하는`styleResolution` 옵션 기본값을`application-order`에서`property-specificity` 으로 변경 |
| 112 | + |
| 113 | +--- |
| 114 | + |
| 115 | +##Electron 37.0.0 | Electron |
| 116 | + |
| 117 | +[www.electronjs.org/blog/electron-37-0](https://www.electronjs.org/blog/electron-37-0"Electron 37.0.0 | Electron") |
| 118 | + |
| 119 | +<pclass="jser-tags jser-tag-icon"><spanclass="jser-tag">Electron</span> <spanclass="jser-tag">ReleaseNote</span></p> |
| 120 | + |
| 121 | +Electron 37.0 출시. |
| 122 | +Chromium 138.0.7204.35/Node 22.16.0/V8 13.8 업데이트. |
| 123 | +`window.open`에서`innerWidth`와`innerHeight` 옵션 지원, Node.js 의`--experimental-network-inspection` 지원. |
| 124 | +unhandled rejection 동작 변경, WebUSB/WebSerial API blocklist 지원. |
| 125 | + |
| 126 | +--- |
| 127 | + |
| 128 | +##Deno 2.4: deno bundle is back | Deno |
| 129 | + |
| 130 | +[deno.com/blog/v2.4](https://deno.com/blog/v2.4"Deno 2.4: deno bundle is back | Deno") |
| 131 | + |
| 132 | +<pclass="jser-tags jser-tag-icon"><spanclass="jser-tag">deno</span> <spanclass="jser-tag">ReleaseNote</span></p> |
| 133 | + |
| 134 | +Deno v2.4 출시. |
| 135 | +`deno bundle` 명령어 부활/텍스트`byte` import 기능/OpenTelemetry 안정화 |
| 136 | +`--preload` 플래그 추가/`deno update` 명령어 추가/`DENO_COMPAT` 환경 변수 추가, package.json의 conditional exports 지원 |
| 137 | + |
| 138 | +--- |
| 139 | + |
| 140 | +##Release v3.0.0 · recharts/recharts |
| 141 | + |
| 142 | +[github.com/recharts/recharts/releases/tag/v3.0.0](https://github.com/recharts/recharts/releases/tag/v3.0.0"Release v3.0.0 · recharts/recharts") |
| 143 | + |
| 144 | +<pclass="jser-tags jser-tag-icon"><spanclass="jser-tag">React</span> <spanclass="jser-tag">graphic</span> <spanclass="jser-tag">library</span></p> |
| 145 | + |
| 146 | +Recharts 3 출시. |
| 147 | +Custom components 지원, 기본적으로`accessibilityLayera11y` 유효로 변경 |
| 148 | + |
| 149 | +-[3.0 migration guide · recharts/recharts Wiki](https://github.com/recharts/recharts/wiki/3.0-migration-guide#breaking-code-changes"3.0 migration guide · recharts/recharts Wiki") |
| 150 | + |
| 151 | +--- |
| 152 | + |
| 153 | +##dahlia/logtape: Simple logging library with zero dependencies for Deno, Node.js, Bun, browsers, and edge functions |
| 154 | + |
| 155 | +[github.com/dahlia/logtape?tab=readme-ov-file](https://github.com/dahlia/logtape?tab=readme-ov-file"dahlia/logtape: Simple logging library with zero dependencies for Deno, Node.js, Bun, browsers, and edge functions") |
| 156 | + |
| 157 | +<pclass="jser-tags jser-tag-icon"><spanclass="jser-tag">nodejs</span> <spanclass="jser-tag">JavaScript</span> <spanclass="jser-tag">library</span> <spanclass="jser-tag">ReleaseNote</span></p> |
| 158 | + |
| 159 | +로그 라이브러리. |
| 160 | +라이브러리와 애플리케이션 이용을 상정해서, Node.js/Deno/Browser으로 동작, 구조화 로그 지원. |
| 161 | +또한, pino나 winston 로그 라이브러리와 Integration 하는 Adapter 제공 |
| 162 | + |
| 163 | +--- |
| 164 | + |
| 165 | +<h1class="site-genre">읽을거리</h1> |
| 166 | + |
| 167 | +--- |
| 168 | + |
| 169 | +##CSS conditionals with the new if() function | Blog | Chrome for Developers |
| 170 | + |
| 171 | +[developer.chrome.com/blog/if-article?hl=en](https://developer.chrome.com/blog/if-article?hl=en"CSS conditionals with the new if() function | Blog | Chrome for Developers") |
| 172 | + |
| 173 | +<pclass="jser-tags jser-tag-icon"><spanclass="jser-tag">css</span> <spanclass="jser-tag">article</span></p> |
| 174 | + |
| 175 | +CSS에서`if()` 함수에 대하여. |
| 176 | +프로퍼티 값에`if()`와`style()`/`media()`/`suports()` 사용해 조건 분기를 작성하는 방법에 대하여 |
| 177 | + |
| 178 | +--- |
| 179 | + |
| 180 | +##How We Reduced CKEditor’s Bundle Size by 40% | CKEditor |
| 181 | + |
| 182 | +[ckeditor.com/blog/how-we-reduced-ckeditor-bundle-size/](https://ckeditor.com/blog/how-we-reduced-ckeditor-bundle-size/"How We Reduced CKEditor’s Bundle Size by 40% | CKEditor") |
| 183 | + |
| 184 | +<pclass="jser-tags jser-tag-icon"><spanclass="jser-tag">JavaScript</span> <spanclass="jser-tag">bundler</span> <spanclass="jser-tag">article</span></p> |
| 185 | + |
| 186 | +CKEditor 5의 bundle size 최적화 관련하여. |
| 187 | +버전 어긋남 대책으로 re-export 으로 패키지를 모은 패키지를 공개하고 있지만 tree-shaking가 먹지 않아 bundle 크기 문제가 일어남. |
| 188 | +`/* #__PURE__ */` 주석을 활용해서, ES2022으로 target 변경,`sideEffects` 플러그 설정을 하는 tree shaking 문제 해결한 이야기. |
| 189 | +또한, Sonda 사용해 bundle 분석 |
| 190 | + |
| 191 | +-[Sonda](https://sonda.dev/"Sonda") |
| 192 | + |
| 193 | +--- |
| 194 | + |
| 195 | +##\`useOptimistic\` to Make Your App Feel Instant | Epic React by Kent C. Dodds |
| 196 | + |
| 197 | +[www.epicreact.dev/use-optimistic-to-make-your-app-feel-instant-zvyuv](https://www.epicreact.dev/use-optimistic-to-make-your-app-feel-instant-zvyuv"`useOptimistic` to Make Your App Feel Instant | Epic React by Kent C. Dodds") |
| 198 | + |
| 199 | +<pclass="jser-tags jser-tag-icon"><spanclass="jser-tag">React</span> <spanclass="jser-tag">article</span></p> |
| 200 | + |
| 201 | +React의`useOptimistic` hooks 사용 방법이나`setState`와 차이에 대하여 |
| 202 | + |
| 203 | +--- |
| 204 | + |
| 205 | +<h1class="site-genre">소프트웨어, 도구, 라이브러리</h1> |
| 206 | + |
| 207 | +--- |
| 208 | + |
| 209 | +##photostructure/tz-lookup: JavaScript Library for Timezone Lookup by Location |
| 210 | + |
| 211 | +[github.com/photostructure/tz-lookup](https://github.com/photostructure/tz-lookup"photostructure/tz-lookup: JavaScript Library for Timezone Lookup by Location") |
| 212 | + |
| 213 | +<pclass="jser-tags jser-tag-icon"><spanclass="jser-tag">JavaScript</span> <spanclass="jser-tag">library</span></p> |
| 214 | + |
| 215 | +위도 경도에서 지명을 검색하는 라이브러리 |
| 216 | + |
| 217 | +--- |