2023년의 Deno
(deno.com)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가 현대 웹 개발의 주요 플레이어로 자리 잡을 가능성을 높이고 있음.
댓글과 토론
Hacker News 의견
- 한 사용자는 인터넷에 연결되지 않은 환경에서 Deno 애플리케이션을 가져오는 방법을 아직 찾지 못했으며, 이에 대한 문서가 전혀 없다고 지적함. 이 사용자는 Deno가 기업 환경에서 희망을 가질 수 없다고 생각함.
- 다른 사용자는 WebGPU 기능에 관심을 표현하며, Slint 프레임워크를 통해 브라우저나 웹뷰 없이 자바스크립트/타입스크립트로 데스크톱 GUI를 만들고 있음을 설명함. Deno가 직접 윈도우를 띄울 수 있다면, 모든 플랫폼에 대해 네이티브 바이너리 대신 wasm을 배포할 수 있을 것이라고 기대함. 그러나 WebGPU 기능이 윈도우를 띄우는 API를 포함하지 않아 여전히 추가 라이브러리가 필요하다고 덧붙임.
- 한 사용자는 Deno의 컴파일 상황이 개선되기를 바라며, 생성된 실행 파일이 90MB 이상이고 압축 시 오류가 발생하여 Go 언어처럼 배포하기 어렵다고 지적함. Deno가 Node.js의 pkg 솔루션보다 크기 면에서 더 나빠졌다고 언급함.
- 또 다른 사용자는 Deno가 러스트 호스트 프로세스에 내장될 수 있는 더 큰 지원을 보고 싶어함. 자바스크립트 번들러를 작성 중이며, 플러그인을 실행하기 위해 Node.js 런타임이 필요하지만, deno-core 크레이트가 매우 기본적이고 내장하기 어렵다고 언급함. Deno가 JS 도구 세계에서 "플러그인 런타임"이 될 수 있을 것이라고 기대하며, 현재는 Rust 호스트 프로세스에서 stdio를 사용하여 Node.js 자식 프로세스와 통신하고 있음을 설명함.
- 한 사용자는 자바스크립트를 좋아하지 않지만, Deno를 사용해보고 매우 부드럽고 빠른 경험을 했다고 긍정적인 의견을 표현함.
- 또 다른 사용자는 2023년에 처음으로 비트리비얼한 Deno 앱을 프로덕션에 배포했으며, 여러 진입점이 있는 저장소에서 lock 파일을 동기화하는 학습 과정에 어려움을 겪었지만, 전반적으로 좋은 경험이었다고 말함.
- Jupyter가 Deno를 사용하여 자바스크립트와 타입스크립트를 지원하게 되었다는 소식에 대해 한 사용자는 긍정적인 반응을 보이면서도, 파이썬이 숫자와 수학에 뛰어난 지원을 제공하는 점을 언급하며, 이를 사용하고 싶어하는 사람이 있을지 의문을 제기함.
- 한 사용자는 기사 끝에 링크된 JSR의 대기 목록에 가입할 수 있으며, Deno 팀이 무엇을 만들고 있는지 궁금해함.
- Deno Deploy가 GCP 지역을 35개에서 12개로 줄였다는 소식에 대한 링크를 공유한 사용자가 있음.
- Fresh라는 웹 개발 프레임워크를 사용하고 싶어하지만, 현재 Tailwind만 지원하는 것은 미성숙해 보인다고 지적하는 사용자가 있음. 다음 반복에서 CSS 번들링이 아닌 뷰 전환을 우선시하는 것에 대해 의아해함.