|
| 1 | +--- |
| 2 | +title: "2026-01-08: zod v4.3.0, Flint, pnpm in 2025" |
| 3 | +author: "azu" |
| 4 | +translator: rewrite0w0 |
| 5 | +layout: post |
| 6 | +date: 2026-01-08T12:56:28.201Z |
| 7 | +category: JSer |
| 8 | +tags: |
| 9 | +- pnpm |
| 10 | +- TypeScript |
| 11 | +- React |
| 12 | +- Tools |
| 13 | +- css |
| 14 | + |
| 15 | +--- |
| 16 | + |
| 17 | +JSer.info #760 - zod v4.3.0 출시되었다. |
| 18 | + |
| 19 | +- [Release v4.3.0 · colinhacks/zod](https://github.com/colinhacks/zod/releases/tag/v4.3.0) |
| 20 | + |
| 21 | +JSON 스키마에서 Zod 스키마로 변환하는 `z.fromJSONSchema()`가 추가되었다. 또한, 배타적 논리합으로 자료형을 정의하는 `z.xor()`, 부분적인 record 검증하는 `z.looseRecord()`, `undefined` 값 허용하지 않는 `.exactOptional()`도 추가되었다. |
| 22 | +그 외로도 `.apply()` 메서드, `check()`의 alias 인 `.with()` 메서드, `ZodMap`으로의 `min`/`max`/`nonempty`/`size` 메서드, 문자열을 slug로 변환하는 `z.slugify()`가 추가되었다. |
| 23 | + |
| 24 | +---- |
| 25 | + |
| 26 | +TypeScript-ESLint 관리자 중심으로 개발된 실험적인 하이브리트 린터 Flint가 공개되었다. |
| 27 | + |
| 28 | +- [Introducing Flint | Flint](https://www.flint.fyi/blog/introducing-flint/) |
| 29 | +- [What Flint Does Differently | Flint](https://www.flint.fyi/blog/what-flint-does-differently/) |
| 30 | + |
| 31 | +TypeScript로 작성된 코어와 네이티브 스피드(Go/Rust) 파서를 조합한 것으로, 성능과 개발자 친화를 목표로하고 있다. TypeScript 자료형 정보를 늘 이용하고, 크로스 파이널 캐시, JSON/Markdown/YAML 내장 지원, Prettier와 통합 등의 기능을 목표로 하고 있다. Lint는 에러만 대상하며, 인터렉티브한 CLI이나 플러그인 레지스트리도 예정되어 있다. |
| 32 | + |
| 33 | +---- |
| 34 | + |
| 35 | +pnpm의 2025년 돌아보기 글이 공개되었다. |
| 36 | + |
| 37 | +- [🚀 pnpm in 2025 | pnpm](https://pnpm.io/blog/2025/12/29/pnpm-in-2025) |
| 38 | + |
| 39 | +v10.0에서 라이프 사이클 스크립트를 기본적으로 무효화했으며, `minimumReleaseAge`이나 `trustPolicy: no-downgrade` 같은 보안 기능이 추가되었다. v10.12에서 Global Virtual Store, v10.9에서 JSR 네이티브 지원, v10.14/v10.21에서 `devEngines.runtime`에 의한 자동 런타임 관리 지원, 2025년 주요한 변경점이라 정리되었다. |
| 40 | + |
| 41 | +---- |
| 42 | + |
| 43 | +{% include inline-support.html %} |
| 44 | + |
| 45 | +---- |
| 46 | + |
| 47 | +<h1 class="site-genre">헤드라인</h1> |
| 48 | + |
| 49 | +---- |
| 50 | + |
| 51 | +## Release pnpm 10.27 · pnpm/pnpm |
| 52 | +[github.com/pnpm/pnpm/releases/tag/v10.27.0](https://github.com/pnpm/pnpm/releases/tag/v10.27.0 "Release pnpm 10.27 · pnpm/pnpm") |
| 53 | +<p class="jser-tags jser-tag-icon"><span class="jser-tag">pnpm</span> <span class="jser-tag">ReleaseNote</span></p> |
| 54 | + |
| 55 | +pnpm v10.27.0 출시. |
| 56 | +`trustPolicy: no-downgrade` 엄격성을 완화하기 위해, 공개에서 일정 시간이 지난 대상 외로 하는`trustPolicyIgnoreAfter` 옵션 추가 |
| 57 | + |
| 58 | + |
| 59 | +---- |
| 60 | + |
| 61 | +## Release v4.3.0 · colinhacks/zod |
| 62 | +[github.com/colinhacks/zod/releases/tag/v4.3.0](https://github.com/colinhacks/zod/releases/tag/v4.3.0 "Release v4.3.0 · colinhacks/zod") |
| 63 | +<p class="jser-tags jser-tag-icon"><span class="jser-tag">TypeScript</span> <span class="jser-tag">JSON</span> <span class="jser-tag">library</span> <span class="jser-tag">ReleaseNote</span></p> |
| 64 | + |
| 65 | +zod v4.3.0 출시. |
| 66 | +JSON 스키마에서 Zod로 변환하는 `z.fromJSONSchema()` 추가, `z.xor()` 추가. |
| 67 | +부분 적인 record 검증하는 `z.looseRecord()`, `undefined` 값을 허용하지 않는 `.exactOptional()` 추가. |
| 68 | +`.apply()` 메서드 추가, `check()` 메서드의 alias로 `.with()` 메서드 추가. |
| 69 | +`ZodMap`에 `min`/`max`/`nonempty`/`size` 메서드 추가, `z.slugify()` 변환 추가 |
| 70 | + |
| 71 | + |
| 72 | +---- |
| 73 | + |
| 74 | +## Announcing Rspack 1.7 - Rspack |
| 75 | +[rspack.rs/blog/announcing-1-7](https://rspack.rs/blog/announcing-1-7 "Announcing Rspack 1.7 - Rspack") |
| 76 | +<p class="jser-tags jser-tag-icon"><span class="jser-tag">rspack</span> <span class="jser-tag">ReleaseNote</span></p> |
| 77 | + |
| 78 | +Rspack 1.7 출시. |
| 79 | +SWC 플러그인 호환성 개선, Import Bytes proposal 지원, lazy compilation 기본적으로 유효화. |
| 80 | +Constant inlining/TypeScript Enum inlining/Type re-export check 최적화 안정화. |
| 81 | +Rsbuild 1.7에는 실행할 때 에러를 오버레이로 보임 / 파일 크기 차분 표기 추가. |
| 82 | +Rslib 0.19에는 ESM 출력이 안정화, JavaScript API 추가 |
| 83 | + |
| 84 | + |
| 85 | +---- |
| 86 | + |
| 87 | +## feat: add llms.txt endpoint for LLM-optimized documentation by quantizor · Pull Request #2388 · tailwindlabs/tailwindcss.com |
| 88 | +[github.com/tailwindlabs/tailwindcss.com/pull/2388#issuecomment-3717222957](https://github.com/tailwindlabs/tailwindcss.com/pull/2388#issuecomment-3717222957 "feat: add llms.txt endpoint for LLM-optimized documentation by quantizor · Pull Request #2388 · tailwindlabs/tailwindcss.com") |
| 89 | +<p class="jser-tags jser-tag-icon"><span class="jser-tag">company</span> <span class="jser-tag">css</span> <span class="jser-tag">news</span></p> |
| 90 | + |
| 91 | +Tailwind 개발처인 Tailwind Lab 수입이 크게 적어졌기에, 엔지니어링 팀의 75%인 3명을 내보낸 이야기 |
| 92 | + |
| 93 | +- [Adam's Morning Walk | We had six months left](https://adams-morning-walk.transistor.fm/episodes/we-had-six-months-left "Adam&#039;s Morning Walk | We had six months left") |
| 94 | + |
| 95 | +---- |
| 96 | +<h1 class="site-genre">읽을거리</h1> |
| 97 | + |
| 98 | +---- |
| 99 | + |
| 100 | +## Introducing Flint | Flint |
| 101 | +[www.flint.fyi/blog/introducing-flint/](https://www.flint.fyi/blog/introducing-flint/ "Introducing Flint | Flint") |
| 102 | +<p class="jser-tags jser-tag-icon"><span class="jser-tag">ESLint</span> <span class="jser-tag">Tools</span> <span class="jser-tag">article</span></p> |
| 103 | + |
| 104 | +TypeScript-ESLint의 관리자 중심으로 작성된 실험적 하이브리드 린터. |
| 105 | +TypeScript로 작성된 코어와 native speed(Go/Rust) 파서를 조합함으로, 성능과 개발자 친화 양립성 목표. |
| 106 | +아키텍처면에는, 하이브리드 코어/TypeScript 자료형 정보를 항상 이용/크로스 파이널 캐시/JSON/Markdown/YAML 내장 지원/Prettier와 통합. |
| 107 | +Lint는 에러만 하고, 인터렉티브한 CLI, 옵션명 표준화, 플러그인 레지스트리 이용할 예정 |
| 108 | + |
| 109 | +- [What Flint Does Differently | Flint](https://www.flint.fyi/blog/what-flint-does-differently/ "What Flint Does Differently | Flint") |
| 110 | + |
| 111 | +---- |
| 112 | + |
| 113 | +## Introducing CSS Grid Lanes | WebKit |
| 114 | +[webkit.org/blog/17660/introducing-css-grid-lanes/](https://webkit.org/blog/17660/introducing-css-grid-lanes/ "Introducing CSS Grid Lanes | WebKit") |
| 115 | +<p class="jser-tags jser-tag-icon"><span class="jser-tag">css</span> <span class="jser-tag">article</span></p> |
| 116 | + |
| 117 | +`display: grid-lanes`의 Grid Lanes에 대하여 |
| 118 | + |
| 119 | + |
| 120 | +---- |
| 121 | + |
| 122 | +## 🚀 pnpm in 2025 | pnpm |
| 123 | +[pnpm.io/blog/2025/12/29/pnpm-in-2025](https://pnpm.io/blog/2025/12/29/pnpm-in-2025 "🚀 pnpm in 2025 | pnpm") |
| 124 | +<p class="jser-tags jser-tag-icon"><span class="jser-tag">pnpm</span> <span class="jser-tag">security</span> <span class="jser-tag">article</span></p> |
| 125 | + |
| 126 | +pnpm의 2025년 돌아보기 글. |
| 127 | +v10.0에서 라이프사이클 스크립트 기본적 무효화, `minimumReleaseAge`나 `trustPolicy: no-downgrade` 보안 기능 추가. |
| 128 | +v10.12에서 Global Virtual Store 추가, v10.9에서 JSR 네이티브 지원, Config Dependencies 기능 추가. |
| 129 | +v10.14/v10.21에서 `devEngines.runtime`에 의한 자동 런타임 관리 지원 |
| 130 | + |
| 131 | + |
| 132 | +---- |
| 133 | + |
| 134 | +## How to compile JavaScript to C with Static Hermes |
| 135 | +[devongovett.me/blog/static-hermes.html](https://devongovett.me/blog/static-hermes.html "How to compile JavaScript to C with Static Hermes") |
| 136 | +<p class="jser-tags jser-tag-icon"><span class="jser-tag">JavaScript</span> <span class="jser-tag">article</span> <span class="jser-tag">Tools</span></p> |
| 137 | + |
| 138 | +Static Hermes 사용해 JavaScript를 C언어 코드로 컴파일, C 코드로 Rust에서 호출하는 구현에 대하여 |
| 139 | + |
| 140 | + |
| 141 | +---- |
| 142 | + |
| 143 | +## Fixing TypeScript Performance Problems: A Case Study | Viget |
| 144 | +[www.viget.com/articles/fixing-typescript-performance-problems](https://www.viget.com/articles/fixing-typescript-performance-problems "Fixing TypeScript Performance Problems: A Case Study | Viget") |
| 145 | +<p class="jser-tags jser-tag-icon"><span class="jser-tag">TypeScript</span> <span class="jser-tag">article</span></p> |
| 146 | + |
| 147 | +TypeScript 컴파일 성능의 디버그 방법 |
| 148 | + |
| 149 | + |
| 150 | +---- |
| 151 | + |
| 152 | +## Data Fetching Patterns in React Server Components |
| 153 | +[gauravthakur.com/blog/data-fetching-patterns-react-server-components](https://gauravthakur.com/blog/data-fetching-patterns-react-server-components "Data Fetching Patterns in React Server Components") |
| 154 | +<p class="jser-tags jser-tag-icon"><span class="jser-tag">React</span> <span class="jser-tag">article</span></p> |
| 155 | + |
| 156 | +클라이언트 사이드 렌더링, 서버 사이드 렌더링, React Server Component 렌더링에 의한 전송되는 데이터의 차이를 가시화 하는 글 |
| 157 | + |
| 158 | + |
| 159 | +---- |
| 160 | +<h1 class="site-genre">슬라이드, 영상</h1> |
| 161 | + |
| 162 | +---- |
| 163 | + |
| 164 | +## vjeux/webcodecs-nodejs-10k-challenge: Let's get WebCodec to the server |
| 165 | +[github.com/vjeux/webcodecs-nodejs-10k-challenge/](https://github.com/vjeux/webcodecs-nodejs-10k-challenge/ "vjeux/webcodecs-nodejs-10k-challenge: Let's get WebCodec to the server") |
| 166 | +<p class="jser-tags jser-tag-icon"><span class="jser-tag">nodejs</span> <span class="jser-tag">JavaScript</span> <span class="jser-tag">video</span> <span class="jser-tag">library</span></p> |
| 167 | + |
| 168 | +Node.js으로 WebCodecs API를 동작시키는 WebCodecs Node.js 10k Challenge 결과가 공개되어, 7개의 프로젝트에 채택됨. |
| 169 | + |
| 170 | + |
| 171 | +---- |
| 172 | +<h1 class="site-genre">도서</h1> |
| 173 | + |
| 174 | +---- |
| 175 | + |
| 176 | +## jotai로 React 재입문 |
| 177 | +[zenn.dev/uhyo/books/learn-react-with-jotai](https://zenn.dev/uhyo/books/learn-react-with-jotai "jotai로 React 재입문") |
| 178 | +<p class="jser-tags jser-tag-icon"><span class="jser-tag">React</span> <span class="jser-tag">book</span></p> |
| 179 | + |
| 180 | +React와 jotai에 관하여 |
| 181 | + |
| 182 | + |
| 183 | +---- |
0 commit comments