Deno의 2023년 변화
- Deno는
package.json
파일을 이해하며, node:fs
와 node:crypto
같은 내장 Node 모듈을 node:
지정자를 사용하여 가져올 수 있게 됨.
- 새로운 웹 서버 API
Deno.serve
가 안정화되었고, HTTP 처리량이 연간 약 73% 향상됨.
-
deno compile
은 워커, 동적 임포트, npm 모듈을 지원하게 됨.
- Deno는 웹 스트림(
ReadableStream
과 WriteableStream
)과 AbortController
를 API 전반에 더 잘 활용하여 브라우저와 서버 측 프로그래밍 간의 격차를 좁힘.
- Deno의 설정 파일
deno.json
은 이제 가져오기 맵으로도 사용되며, 스키마를 단순화하고, 글로브 지원 및 유용한 최상위 "exclude"
속성을 추가함.
- 오픈 소스 노트북 도구인 Jupyter가 JavaScript와 TypeScript를 사용하여 Deno를 지원하게 됨.
-
WebGPU가 거의 1년간의 개발 끝에 Deno에 추가됨.
- Deno의 제로 설정 TypeScript는 LSP와 VS Code 통합의 상당한 개선을 통해 편집기 통합이 더 나아짐.
- Deno 기반 웹 프레임워크인 Fresh는 Tailwind 지원, Partials, 레이아웃 파일 등 기능이 확장됨.
-
Deno Deploy는 Deno KV, Queues, Cron과 같은 전 세계적으로 분산된 기본 요소로 더 강력해짐.
- 플랫폼이 신뢰할 수 없는 다중 테넌트 JavaScript를 배포하고 실행할 수 있도록 자체 서비스 서브호스팅을 출시함.
Node 및 npm과의 호환성 향상
- Deno는
node:
지정자를 통해 node:fs
, node:child_process
와 같은 내장 Node 모듈을 포함하여 Node 생태계와의 호환성을 확장함.
- Node에서 Deno로의 원활한 전환을 위해 여러 새로운 기능을 도입함:
-
--unstable-byonm
플래그를 사용하면 선호하는 npm 패키지 관리자를 Deno 내에서 사용할 수 있음.
-
--unstable-sloppy-imports
플래그는 모듈 가져오기의 엄격함을 완화하여 다양한 코딩 스타일과 관행을 수용함.
-
--unstable-unsafe-proto
플래그는 많은 npm 패키지가 의존하는 Object.prototype.__proto__
를 지원함.
- Node-API의 안정화로
--unstable
플래그 없이 Node-API에 의존하는 npm 패키지를 사용할 수 있게 되어 지원 범위가 확대됨.
Deno.serve()
를 통한 더 간단하고 빠른 웹 서버
-
Deno.serve()
함수를 도입하고 안정화하여 개발자가 최소한의 코드로 서버를 시작할 수 있게 함.
- 코어 라이브러리와 이벤트 루프 메커니즘의 타겟팅된 최적화를 통해 성능이 크게 향상됨.
- Deno의 HTTP 처리량은 기본 "Hello, world" 서버 설정을 사용한 벤치마크 테스트에서 눈에 띄게 증가함.
더 유연한 deno.json
- Deno는 복잡한 설정 없이도 사용할 수 있는 프로그래밍 원칙을 지향하며,
deno.json
설정 파일을 지속적으로 개선하여 사용의 용이성을 유지함:
-
deno.json
을 가져오기 맵으로도 사용할 수 있게 함.
-
deno fmt
는 세미콜론을 지원하여 코드 스타일에 대한 유연성을 제공함.
-
package.json
과의 통합으로 Node와 Deno 환경 간의 전환을 용이하게 함.
-
deno.json
구조를 단순화하여 개발자가 더 직관적으로 탐색할 수 있게 함.
- 글로브 패턴의 도입으로 파일 및 디렉토리의 포함 또는 제외를 더 정밀하게 제어할 수 있게 됨.
LSP를 통한 더 부드러운 개발 경험
- Deno의 언어 서버 프로토콜(LSP) 통합은 정확한 정의 이동, 포괄적인 IntelliSense, TypeScript 프로젝트를 위한 원활한 코드 포맷팅 등의 기능을 제공함.
- LSP를 개선하기 위해 많은 노력을 기울여 Deno에서의 코딩을 더 부드럽고 직관적으로 만듦.
WebGPU
- WebGPU는 개발자가 JavaScript를 사용하여 GPU 하드웨어의 성능을 직접 활용할 수 있게 하는 첨단 기술을 Deno에 통합함.
- WebGPU는
--unstable-webgpu
플래그 뒤에서 사용할 수 있으며, Deno 애플리케이션의 기능을 확장하는 중요한 이정표임.
Jupyter 노트북
- 오픈 소스 노트북 도구인 Jupyter는 JavaScript와 TypeScript를 사용하여 Deno를 지원하게 됨.
- 이를 통해 데이터 과학, 시각화 등을 현대적인 JavaScript와 TypeScript 및 웹 표준 API를 사용하여 수행할 수 있게 됨.
주목할 만한 오픈 소스 Rust 크레이트
- Deno는 다양한 오픈 소스 프로젝트와 연계되어 있으며, Deno의 기능 세트를 확장하고 성능을 최적화하기 위해 적극적으로 기여함.
- 올해 Deno는 독립적으로 유용할 수 있는 몇 가지 Rust 크레이트를 출시함.
Fresh
- Fresh는 클라이언트 측 JavaScript를 기본적으로 전송하지 않는 Deno의 현대적인 전체 스택 웹 프레임워크로, 사용하기 쉽고 성능을 향상시키기 위해 계속 개선됨.
Deno의 클라우드 비즈니스 확장
- Deno Subhosting은 Netlify의 엣지 함수와 Deco.cx 고객의 전자 상거래 상점을 지원하는 동안 자체 서비스로 전환되어 누구나 무료로 사용할 수 있게 됨.
- Deno KV, Queues, Cron과 같은 클라우드 기본 요소를 출시하여 웹 개발을 근본적으로 단순화하는 비전을 향해 진전을 이룸.
Deno 2
- Deno 2는 Node와 npm과의 호환성을 개선하고, 프로젝트의 종속성을 관리하고 최적화하는 데 관한 흥미로운 발표를 포함하여 개선된 런타임을 제공할 예정임.
GN⁺의 의견:
- Deno는 Node.js와의 호환성을 크게 향상시키고, 웹 개발을 단순화하는 데 중점을 두고 있음이 중요함. 이는 기존 Node.js 개발자들에게 Deno로의 전환을 더 쉽게 만들고, Deno의 채택을 촉진할 수 있음.
- WebGPU와 같은 첨단 기능의 통합은 Deno가 단순한 서버 사이드 플랫폼을 넘어서 더 넓은 범위의 애플리케이션 개발에 적합하게 만들고 있음을 보여줌. 이는 특히 GPU를 활용한 고성능 컴퓨팅이 필요한 개발자들에게 매력적일 수 있음.
- Fresh 프레임워크와 Deno Deploy의 발전은 Deno가 전체 스택 웹 개발에서 중요한 역할을 할 수 있음을 시사하며, 클라우드 기반 서비스로서의 Deno의 위치를 강화함. 이러한 발전은 Deno가 현대 웹 개발의 주요 플레이어로 자리 잡을 가능성을 높이고 있음.