Offcanvas

���������������

“유연하고 안전하며 빠르다” 웹어셈블리(Wasm)가 클라우드 컴퓨팅의 미래인 이유

서버에서든 엣지에서든 ‘웹어셈블리(WebAssembly; Wasm)’를 사용하면 이전보다 데이터에 훨씬 더 가깝게 실행되는 사용자 정의 로직을 생성할 수 있다. 아울러 더욱더 유연하고 안전하며 효율적으로 수행할 수도 있다.  웹어셈블리(WebAssembly)의 줄임말인 Wasm은 웹용으로 개발됐다. 하지만 Wasm 기술은 웹 브라우저를 넘어 확장됐다. 이제 기업들은 서버 측에서 Wasm을 실행하기 시작했다. 예를 들면 (필자의 소속 기업인) 싱글스토어(SingleStore)는 자사 데이터베이스에서 이를 사용하고 있다.   일각에서는 Wasm이 컨테이너 기술과 유비쿼터스 자바스크립트를 대체할 것이라고 생각한다. 이를 믿든 믿지 않든 Wasm은 분명히 클라우드 컴퓨팅에 영향을 미치고 있다. 왜 그리고 어떻게?    Wasm은 크로스 플랫폼이다: 클라우드 구성요소를 안전하고 간단하게 결합한다 사람들은 소프트웨어를 작성하기 위해 모든 종류의 언어를 사용한다. 이러한 언어를 상호작용하게 하는 것은 어렵다. Wasm은 (사용자가) 원하는 어떤 언어로든 작성할 수 있는 프레임워크를 제공한다. 그다음 공통의 시뮬레이션된 기계 형식을 생성한다.  이 형식을 사용하면 러스트, C/C++, 고랭 등 다양한 언어로 작성된 구성요소가 서로 통신할 수 있다. 또 Wasm은 서버 측 시스템(예: 데이터베이스 등)이 해당 모듈을 어떻게 생성했는지 확인하거나 신경 쓰지 않고도 다른 언어의 구성요소를 내장할 수 있는 기능을 제공한다.  Wasm을 범용 플러그인 형식이라고 생각하라. 서드파티에서 개발한 구성요소로 시스템의 기능을 강화하고 싶다고 가정해보자. Wasm을 활용하면 일반적으로 추가 기능을 통합할 때 수반되는 위험 없이 시스템에 새 구성요소를 가져올 수 있다. 예를 들어 외부 구성요소가 시스템을 충돌시키거나 예기치 않은 방식으로 작동할 수 있다. Wasm은 서로 다른 시스템과 구성요소가 상호 작용할 수 있는 매우 안전한 프...

웹어셈블리 Wasm 클라우드 컨테이너 자바스크립트

2022.11.03

서버에서든 엣지에서든 ‘웹어셈블리(WebAssembly; Wasm)’를 사용하면 이전보다 데이터에 훨씬 더 가깝게 실행되는 사용자 정의 로직을 생성할 수 있다. 아울러 더욱더 유연하고 안전하며 효율적으로 수행할 수도 있다.  웹어셈블리(WebAssembly)의 줄임말인 Wasm은 웹용으로 개발됐다. 하지만 Wasm 기술은 웹 브라우저를 넘어 확장됐다. 이제 기업들은 서버 측에서 Wasm을 실행하기 시작했다. 예를 들면 (필자의 소속 기업인) 싱글스토어(SingleStore)는 자사 데이터베이스에서 이를 사용하고 있다.   일각에서는 Wasm이 컨테이너 기술과 유비쿼터스 자바스크립트를 대체할 것이라고 생각한다. 이를 믿든 믿지 않든 Wasm은 분명히 클라우드 컴퓨팅에 영향을 미치고 있다. 왜 그리고 어떻게?    Wasm은 크로스 플랫폼이다: 클라우드 구성요소를 안전하고 간단하게 결합한다 사람들은 소프트웨어를 작성하기 위해 모든 종류의 언어를 사용한다. 이러한 언어를 상호작용하게 하는 것은 어렵다. Wasm은 (사용자가) 원하는 어떤 언어로든 작성할 수 있는 프레임워크를 제공한다. 그다음 공통의 시뮬레이션된 기계 형식을 생성한다.  이 형식을 사용하면 러스트, C/C++, 고랭 등 다양한 언어로 작성된 구성요소가 서로 통신할 수 있다. 또 Wasm은 서버 측 시스템(예: 데이터베이스 등)이 해당 모듈을 어떻게 생성했는지 확인하거나 신경 쓰지 않고도 다른 언어의 구성요소를 내장할 수 있는 기능을 제공한다.  Wasm을 범용 플러그인 형식이라고 생각하라. 서드파티에서 개발한 구성요소로 시스템의 기능을 강화하고 싶다고 가정해보자. Wasm을 활용하면 일반적으로 추가 기능을 통합할 때 수반되는 위험 없이 시스템에 새 구성요소를 가져올 수 있다. 예를 들어 외부 구성요소가 시스템을 충돌시키거나 예기치 않은 방식으로 작동할 수 있다. Wasm은 서로 다른 시스템과 구성요소가 상호 작용할 수 있는 매우 안전한 프...

2022.11.03

틈새 파고든다, 새로운 프로그래밍 언어 11선

웹어셈블리를 훨씬 더 쉽게 작성하는 법부터 머신러닝을 지원하는 시각적 언어까지 새로운 프로그래밍 도구 11가지를 살펴본다. 이는 어쩌면 소프트웨어 작성 방식을 재정의할지도 모른다.  영국의 시인 알렉산더 포프는 “희망은 인간의 가슴에서 영원히 샘솟는다(Hope springs eternal in the human breast)”라고 말했으니 해커가 아닌 시인이라 할지라도 새로운 프로그래밍 언어 발견에 대한 희망을 이해할 것이라 본다. 소프트웨어 개발자들은 유니코드 문자의 독특한 조합으로 만들어진 언어가 마침내 모든 문제를 해결하여 몇 번의 클릭만으로 쉽게 코딩할 수 있길 영원히 희망하고 있다.  포프는 분명 답을 상상하기만 하면 될 정도로 직관적인 구문에 대한 희망을 이해할 것이다. 또한 그는 올림픽에서 볼 수 있는 트리플 악셀 혹은 대회전 활강처럼 (사실은 그렇지 않지만) 힘들지 않고 우아해 보이는 새로운 코드를 손에 넣으려는 열망을 높이 평가할 것이다.    하지만 오늘날의 언어 대부분은 기발함이나 코딩 역량을 보여주기 위해 만들어지진 않았다. 이는 개발자(창작자)가 간절하게 해결하고자 했던 문제에 해결책을 내놓으면서 만들어졌다. 대다수의 개발자가 하나 이상의 오래된 기성 언어로 코딩을 계속하겠지만 코딩 문제를 해결하는 데 도움이 되는 새로운 도구도 ‘영원히’ 찾고 있다. 특히, 도메인별 언어(DSL)의 부상에서 이러한 경향을 볼 수 있다. 이러한 언어는 특정 도메인에 초점을 맞추고 있으며, 범용적으로 사용하진 못한다. 하지만 바로 그런 이유로 도구 상자에서 특별한 위치를 차지할 수 있다.  여기서는 틈새시장을 찾은 11개의 새로운 언어를 살펴본다. 비록 지금 당장 필요한 것은 아니지만 이 모두는 현재 하는 일을 개선할 무언가를 갖고 있다. 리액티브 클로저(Reactive Clojure) 이는 클로저(Clojure)와 리액트(React)를 결합한 결과다. 즉, 리액티브 프론트엔드의 모든 가능성과 클로저의...

개발자 소프트웨어 개발 프로그래밍 언어 개발 언어 웹어셈블리 리액티브 클로저 니켈 코브라 바이셉 프링크 파우스트 멜로즈 글리콜 웨이스 자바

2022.05.11

웹어셈블리를 훨씬 더 쉽게 작성하는 법부터 머신러닝을 지원하는 시각적 언어까지 새로운 프로그래밍 도구 11가지를 살펴본다. 이는 어쩌면 소프트웨어 작성 방식을 재정의할지도 모른다.  영국의 시인 알렉산더 포프는 “희망은 인간의 가슴에서 영원히 샘솟는다(Hope springs eternal in the human breast)”라고 말했으니 해커가 아닌 시인이라 할지라도 새로운 프로그래밍 언어 발견에 대한 희망을 이해할 것이라 본다. 소프트웨어 개발자들은 유니코드 문자의 독특한 조합으로 만들어진 언어가 마침내 모든 문제를 해결하여 몇 번의 클릭만으로 쉽게 코딩할 수 있길 영원히 희망하고 있다.  포프는 분명 답을 상상하기만 하면 될 정도로 직관적인 구문에 대한 희망을 이해할 것이다. 또한 그는 올림픽에서 볼 수 있는 트리플 악셀 혹은 대회전 활강처럼 (사실은 그렇지 않지만) 힘들지 않고 우아해 보이는 새로운 코드를 손에 넣으려는 열망을 높이 평가할 것이다.    하지만 오늘날의 언어 대부분은 기발함이나 코딩 역량을 보여주기 위해 만들어지진 않았다. 이는 개발자(창작자)가 간절하게 해결하고자 했던 문제에 해결책을 내놓으면서 만들어졌다. 대다수의 개발자가 하나 이상의 오래된 기성 언어로 코딩을 계속하겠지만 코딩 문제를 해결하는 데 도움이 되는 새로운 도구도 ‘영원히’ 찾고 있다. 특히, 도메인별 언어(DSL)의 부상에서 이러한 경향을 볼 수 있다. 이러한 언어는 특정 도메인에 초점을 맞추고 있으며, 범용적으로 사용하진 못한다. 하지만 바로 그런 이유로 도구 상자에서 특별한 위치를 차지할 수 있다.  여기서는 틈새시장을 찾은 11개의 새로운 언어를 살펴본다. 비록 지금 당장 필요한 것은 아니지만 이 모두는 현재 하는 일을 개선할 무언가를 갖고 있다. 리액티브 클로저(Reactive Clojure) 이는 클로저(Clojure)와 리액트(React)를 결합한 결과다. 즉, 리액티브 프론트엔드의 모든 가능성과 클로저의...

2022.05.11

“타입스크립트 사용, 6년 전에 비해 크게 증가” 2021년 JS 현황 조사

자바스크립트 개발자를 대상으로 실시한 ‘2021년 JS 현황(2021 State of JS)’ 설문조사에서 마이크로소프트의 자바스크립트 기반 프로그래밍 언어 ‘타입스크립트(TypeScript)’ 사용이 6년 전에 비해 급증한 것으로 나타났다. 아울러 웹어셈블리 및 프로그레시브 웹 앱 사용도 크게 증가했다.    지난 2월 15일(현지 시각) 발표된 2021 JS 현황 보고서에 따르면 어떤 ‘자바스크립트 기반 언어(JavaScript flavors)’를 사용하는지 묻는 질문에 전체 설문조사 응답자의 69%가 타입스크립트를 쓰고 있다고 밝혔다. 6년 전에는 21%에 불과했다. 여기서 ‘자바스크립트 기반 언어(JavaScript flavors)’는 자바스크립트로 컴파일하는 언어를 의미한다. 그 뒤를 이어 엘름(Elm), 플로우(Flow), 커피스크립트(CoffeScript)가 각각 2.4%, 1.7%, 1.5%로 큰 차이를 보였다.  한편 타입스크립트는 2012년 오픈소스로 공개됐다. 최신 버전은 타입스크립트 4.5.5이며, 타입스크립트 4.6은 릴리즈 캔디데이트 상태다. 이번 설문조사는 2022년 1월 13일부터 2월까지 진행됐으며, 총 1만 6,085명이 참여했다.  이 밖에 ‘2021 JS 현황’ 보고서의 내용은 다음과 같다.  • 오늘날 자바스크립트는 지난 2016년보다 훨씬 더 나은 상태에 있다고 보고서는 언급했다. 이어서 첫 JS 현황 설문조사가 이뤄졌을 당시에는 타입스크립트를 사용하는 비율이 21%에 불과했지만 현재는 69%에 달한다고 설명했다.  • 전체 응답자의 15.6%가 웹어셈블리(WebAssembly)를 사용하고 있다고 말했다. 2020년과 2019년에 각각 10.5%, 7.2%에서 증가한 수치다.  • 올해 설문조사에서 프로그레시브 웹 앱(Progressive Web Apps)을 사용하고 있다고 밝힌 응답자는 62.2%에 달했다. 작년과 재작년은 각각 55.9%, 48...

타입스크립트 마이크로소프트 프로그래밍 언어 개발 언어 웹어셈블리 프로그레시브 웹 앱 자바스크립트 파이썬 자바

2022.02.22

자바스크립트 개발자를 대상으로 실시한 ‘2021년 JS 현황(2021 State of JS)’ 설문조사에서 마이크로소프트의 자바스크립트 기반 프로그래밍 언어 ‘타입스크립트(TypeScript)’ 사용이 6년 전에 비해 급증한 것으로 나타났다. 아울러 웹어셈블리 및 프로그레시브 웹 앱 사용도 크게 증가했다.    지난 2월 15일(현지 시각) 발표된 2021 JS 현황 보고서에 따르면 어떤 ‘자바스크립트 기반 언어(JavaScript flavors)’를 사용하는지 묻는 질문에 전체 설문조사 응답자의 69%가 타입스크립트를 쓰고 있다고 밝혔다. 6년 전에는 21%에 불과했다. 여기서 ‘자바스크립트 기반 언어(JavaScript flavors)’는 자바스크립트로 컴파일하는 언어를 의미한다. 그 뒤를 이어 엘름(Elm), 플로우(Flow), 커피스크립트(CoffeScript)가 각각 2.4%, 1.7%, 1.5%로 큰 차이를 보였다.  한편 타입스크립트는 2012년 오픈소스로 공개됐다. 최신 버전은 타입스크립트 4.5.5이며, 타입스크립트 4.6은 릴리즈 캔디데이트 상태다. 이번 설문조사는 2022년 1월 13일부터 2월까지 진행됐으며, 총 1만 6,085명이 참여했다.  이 밖에 ‘2021 JS 현황’ 보고서의 내용은 다음과 같다.  • 오늘날 자바스크립트는 지난 2016년보다 훨씬 더 나은 상태에 있다고 보고서는 언급했다. 이어서 첫 JS 현황 설문조사가 이뤄졌을 당시에는 타입스크립트를 사용하는 비율이 21%에 불과했지만 현재는 69%에 달한다고 설명했다.  • 전체 응답자의 15.6%가 웹어셈블리(WebAssembly)를 사용하고 있다고 말했다. 2020년과 2019년에 각각 10.5%, 7.2%에서 증가한 수치다.  • 올해 설문조사에서 프로그레시브 웹 앱(Progressive Web Apps)을 사용하고 있다고 밝힌 응답자는 62.2%에 달했다. 작년과 재작년은 각각 55.9%, 48...

2022.02.22

데이스 랩, 웹어셈블리용 PaaS ‘히포’ 공개

‘히포(Hippo)’는 웹어셈블리와 클라우드 네이티브 도구를 사용해 빠르고 이식 가능하며 안전한 웹 애플리케이션을 더 쉽게 구축하고 실행할 수 있도록 지원한다.  클라우드 네이티브 애플리케이션 개발용 오픈소스 도구를 만드는 ‘데이스 랩(Deis Labs)’이 웹어셈블리 워크로드를 더 쉽게 구축하고 실행할 수 있도록 하는 자체 호스팅 PaaS ‘히포’를 선보였다.    지난 9월 21일 공개된 히포는 아직 개발 중인 프로젝트 단계다. 개발팀에 따르면 이는 웹어셈블리 바이너리 명령어 형식을 기반으로 모듈을 더 쉽게 구성하고 배포할 수 있도록 하기 위한 것이다.  히포는 웹어셈블리 및 다른 최신 클라우드 네이티브 도구를 활용하여 애플리케이션을 컴파일, 배포, 실행, 관리할 수 있는 빠르고 이식 가능하며 안전한 샌드박스 환경을 제공한다. 웹어셈블리 시스템 인터페이스(WebAssembly System Interface; WASI)는 클라우드에서 웹어셈블리를 실행하는 데 사용된다.  히포를 시작하는 방법은 이곳(docs.hippofactory.dev)에서 확인할 수 있다. 히포에는 소스에서의 애플리케이션 구축 및 배포, 간단한 애플리케이션 구성, 릴리즈 자동 배포 및 롤백 기능이 포함돼 있다. 이 밖에 도메인 이름 관리, 원활한 라우팅, 로그 집계, 팀 간 애플리케이션 공유 등의 기능을 지원한다.  개발자는 웹어셈블리로 애플리케이션을 컴파일하고 ‘히포 푸시(Hippo Push)’라는 명령줄 도구를 사용하여 모듈을 히포에 게시한다. 히포를 사용하면 애플리케이션이 ‘빈들(bindle)’로 패키징된다. 이는 검색 가능한 빈들 서버에서 수집된다. 또 히포는 자동 애플리케이션 배포를 위해 ‘채널(channels)’이라는 개념을 사용한다.  개발팀은 향후 히포의 명령줄 인터페이스를 사용하여 애플리케이션을 생성하고, 채널을 구성하며, TLS 인증서를 첨부하고, 로그를 수집할 수 있을 것이라고 전했다. 새 계정...

웹 개발 웹어셈블리 소프트웨어 개발 개발자 클라우드 네이티브 PaaS

2021.09.27

‘히포(Hippo)’는 웹어셈블리와 클라우드 네이티브 도구를 사용해 빠르고 이식 가능하며 안전한 웹 애플리케이션을 더 쉽게 구축하고 실행할 수 있도록 지원한다.  클라우드 네이티브 애플리케이션 개발용 오픈소스 도구를 만드는 ‘데이스 랩(Deis Labs)’이 웹어셈블리 워크로드를 더 쉽게 구축하고 실행할 수 있도록 하는 자체 호스팅 PaaS ‘히포’를 선보였다.    지난 9월 21일 공개된 히포는 아직 개발 중인 프로젝트 단계다. 개발팀에 따르면 이는 웹어셈블리 바이너리 명령어 형식을 기반으로 모듈을 더 쉽게 구성하고 배포할 수 있도록 하기 위한 것이다.  히포는 웹어셈블리 및 다른 최신 클라우드 네이티브 도구를 활용하여 애플리케이션을 컴파일, 배포, 실행, 관리할 수 있는 빠르고 이식 가능하며 안전한 샌드박스 환경을 제공한다. 웹어셈블리 시스템 인터페이스(WebAssembly System Interface; WASI)는 클라우드에서 웹어셈블리를 실행하는 데 사용된다.  히포를 시작하는 방법은 이곳(docs.hippofactory.dev)에서 확인할 수 있다. 히포에는 소스에서의 애플리케이션 구축 및 배포, 간단한 애플리케이션 구성, 릴리즈 자동 배포 및 롤백 기능이 포함돼 있다. 이 밖에 도메인 이름 관리, 원활한 라우팅, 로그 집계, 팀 간 애플리케이션 공유 등의 기능을 지원한다.  개발자는 웹어셈블리로 애플리케이션을 컴파일하고 ‘히포 푸시(Hippo Push)’라는 명령줄 도구를 사용하여 모듈을 히포에 게시한다. 히포를 사용하면 애플리케이션이 ‘빈들(bindle)’로 패키징된다. 이는 검색 가능한 빈들 서버에서 수집된다. 또 히포는 자동 애플리케이션 배포를 위해 ‘채널(channels)’이라는 개념을 사용한다.  개발팀은 향후 히포의 명령줄 인터페이스를 사용하여 애플리케이션을 생성하고, 채널을 구성하며, TLS 인증서를 첨부하고, 로그를 수집할 수 있을 것이라고 전했다. 새 계정...

2021.09.27

"네이티브에 가까운 성능" 웹어셈블리 활용한 언어 프로젝트 12선

오늘날 웹 애플리케이션은 네이티브 데스크톱 애플리케이션만큼 빠르고 반응적이지 않다. 하지만 그렇게 될 수 있다면 어떨까? 이게 바로 ‘웹어셈블리(WebAssembly)’가 약속하는 바다.  ‘웹어셈블리’는 컴팩트 바이너리 형식의 저수준 어셈블리형 언어다. 웹 브라우저에서 네이티브에 가까운 성능으로 실행된다. 또한 웹어셈블리는 C/C++, C#, 러스트(Rust), 고(Go), 코틀린(Kotlin), 스위프트(Swift) 등의 프로그래밍 언어에 이식 가능한 컴파일 타깃을 제공한다.  웹어셈블리는 웹 애플리케이션 성능을 향상할 뿐만 아니라 브라우저 앱 개발에서 자바스크립트 이외의 언어를 사용할 수 있도록 한다는 점에서 환영받아 왔다. 구글, 모질라, 애플, 마이크로소프트 등 거의 모든 메이저 브라우저 회사가 이 기술을 지원하고 있다.  더 나아가 웹어셈블리는 그 위력을 활용하는 여러 신기술 개발로 이어졌고, 여기에는 완전히 새로운 프로그래밍 언어도 포함된다. 웹어셈블리를 바탕으로 한 12가지 언어 프로젝트를 살펴본다.    1. 바이너리엔(Binaryen)  ‘바이너리엔’은 웹어셈블리용 컴파일러 툴체인 인프라 라이브러리다. C++로 작성된 바이너리엔은 쉽고 효과적이며 빠르게 웹어셈블리로 컴파일할 수 있도록 설계됐다.  이는 단일 헤더에 C API가 있으며, 자바스크립트에서 사용할 수 있다. 입력은 웹어셈블리와 유사한 형식으로 허용되지만 이를 채택한 컴파일러의 경우 일반 제어 그래프도 허용된다.  바이너리엔의 내부 IR은 컴팩트 데이터 구조를 사용하고, 병렬 코드 생성 및 최적화를 위해 모든 CPU 코어를 사용한다. 또한 IR은 본질적으로 웹어셈블리의 하위 집합이기 때문에 웹어셈블리로 쉽게 컴파일된다. 웹어셈블리에 특화된 최적화는 코드 크기와 속도를 모두 향상시켜 바이너리엔을 컴파일러 백엔드로 사용할 수 있도록 지원한다.  바이너리엔은 깃허브에서 다운로드할 수 있다.&nb...

웹 애플리케이션 데스크톱 애플리케이션 웹어셈블리 프로그래밍 언어 개발 언어 바이너리엔 블레이저 웹어셈블리 치어프 치어프제이 엠스트립튼 포레스트 그레인 자바 웹어셈블리 파이오다이드 티브이엠 우노 플랫폼 웹어셈블리 클라우드

2021.08.30

오늘날 웹 애플리케이션은 네이티브 데스크톱 애플리케이션만큼 빠르고 반응적이지 않다. 하지만 그렇게 될 수 있다면 어떨까? 이게 바로 ‘웹어셈블리(WebAssembly)’가 약속하는 바다.  ‘웹어셈블리’는 컴팩트 바이너리 형식의 저수준 어셈블리형 언어다. 웹 브라우저에서 네이티브에 가까운 성능으로 실행된다. 또한 웹어셈블리는 C/C++, C#, 러스트(Rust), 고(Go), 코틀린(Kotlin), 스위프트(Swift) 등의 프로그래밍 언어에 이식 가능한 컴파일 타깃을 제공한다.  웹어셈블리는 웹 애플리케이션 성능을 향상할 뿐만 아니라 브라우저 앱 개발에서 자바스크립트 이외의 언어를 사용할 수 있도록 한다는 점에서 환영받아 왔다. 구글, 모질라, 애플, 마이크로소프트 등 거의 모든 메이저 브라우저 회사가 이 기술을 지원하고 있다.  더 나아가 웹어셈블리는 그 위력을 활용하는 여러 신기술 개발로 이어졌고, 여기에는 완전히 새로운 프로그래밍 언어도 포함된다. 웹어셈블리를 바탕으로 한 12가지 언어 프로젝트를 살펴본다.    1. 바이너리엔(Binaryen)  ‘바이너리엔’은 웹어셈블리용 컴파일러 툴체인 인프라 라이브러리다. C++로 작성된 바이너리엔은 쉽고 효과적이며 빠르게 웹어셈블리로 컴파일할 수 있도록 설계됐다.  이는 단일 헤더에 C API가 있으며, 자바스크립트에서 사용할 수 있다. 입력은 웹어셈블리와 유사한 형식으로 허용되지만 이를 채택한 컴파일러의 경우 일반 제어 그래프도 허용된다.  바이너리엔의 내부 IR은 컴팩트 데이터 구조를 사용하고, 병렬 코드 생성 및 최적화를 위해 모든 CPU 코어를 사용한다. 또한 IR은 본질적으로 웹어셈블리의 하위 집합이기 때문에 웹어셈블리로 쉽게 컴파일된다. 웹어셈블리에 특화된 최적화는 코드 크기와 속도를 모두 향상시켜 바이너리엔을 컴파일러 백엔드로 사용할 수 있도록 지원한다.  바이너리엔은 깃허브에서 다운로드할 수 있다.&nb...

2021.08.30

디노 컴퍼니, 서버측 자바스크립트 호스팅 서비스 공개

‘디노 디플로이(Deno Deploy)’를 사용하면 전 세계 25개 데이터센터에 디노 기반 웹 애플리케이션을 배포할 수 있다.  디노 자바스크립트/타입스크립트 런타임 개발팀이 ‘디노 디플로이’를 통해 엣지에서 자바스크립트, 타입스트립트, 웹어셈블리를 실행하는 글로벌 분산형 가상머신(VM) 서비스를 제공한다. 목표는 디노 디플로이가 최신 서버측 자바스크립트를 호스팅할 수 있는 최적의 장소가 되는 것이다.    지난 6월 23일(현지 시각) 디노 디플로이가 첫 번째 베타 버전(Beta 1)으로 출시됐다. GA 버전은 2021년 4분기 공개될 예정이다.  대만, 몬트리올, 로스앤젤레스, 런던 등 전 세계 25개 데이터센터에서 실행되는 다중 테넌트 자바스크립트 엔진 ‘디노 디플로이’는 클라우드 인프라를 구글 V8 가상머신과 통합, 개발자가 로컬에서 개발하고 전 세계로 배포할 수 있도록 지원한다.  디노 CLI(Deno CLI)와 동일한 시스템에 구축된 디노 디플로이의 첫 번째 베타는 깃허브를 통해 무료로 사용할 수 있다. 디노 개발팀은 지난 8개월 동안 오픈소스 디노 CLI로 워크플로우를 보완하기 위해 호스팅 서비스를 설계해왔다고 밝혔다.  개발팀에 따르면 디노 디플로이는 AWS 람다(AWS Lamda)에서 실행되지 않으며 클라우드플레어 워커(Cloudflare Workers)를 사용하지도 않는 독특한 디자인의 새로운 시스템이다. 따라서 대략적인 초기 UI를 살펴보고 이 새로운 자바스크립트 런타임을 탐색하라고 디노 개발팀은 권고했다. 디노 디플로이에서 제공하는 기능은 다음과 같다. • URL을 통한 코드 배포 • 타입스크립트, JSX, ES 모듈 및 원격 HTTPS 가져오기 즉시 지원 • 실시간 통신을 위한 브로드캐스트 채널(Broadcast Channel) 지원(탭 간의 실시간 통신을 위한 브라우저 API인 브로드캐스트 채널 API는 서버측 자바스크립트에 적합하다고 디노 개발팀은 전했다.) • ...

디노 디노 디플로이 데이터센터 웹 애플리케이션 자바스크립트 타입스크립트 런타임 엣지 웹어셈블리 서버측 자바스크립트 다중 테넌트 클라우드 구글 가상머신 AWS 람다 클라우드플레어 라이언 달

2021.06.28

‘디노 디플로이(Deno Deploy)’를 사용하면 전 세계 25개 데이터센터에 디노 기반 웹 애플리케이션을 배포할 수 있다.  디노 자바스크립트/타입스크립트 런타임 개발팀이 ‘디노 디플로이’를 통해 엣지에서 자바스크립트, 타입스트립트, 웹어셈블리를 실행하는 글로벌 분산형 가상머신(VM) 서비스를 제공한다. 목표는 디노 디플로이가 최신 서버측 자바스크립트를 호스팅할 수 있는 최적의 장소가 되는 것이다.    지난 6월 23일(현지 시각) 디노 디플로이가 첫 번째 베타 버전(Beta 1)으로 출시됐다. GA 버전은 2021년 4분기 공개될 예정이다.  대만, 몬트리올, 로스앤젤레스, 런던 등 전 세계 25개 데이터센터에서 실행되는 다중 테넌트 자바스크립트 엔진 ‘디노 디플로이’는 클라우드 인프라를 구글 V8 가상머신과 통합, 개발자가 로컬에서 개발하고 전 세계로 배포할 수 있도록 지원한다.  디노 CLI(Deno CLI)와 동일한 시스템에 구축된 디노 디플로이의 첫 번째 베타는 깃허브를 통해 무료로 사용할 수 있다. 디노 개발팀은 지난 8개월 동안 오픈소스 디노 CLI로 워크플로우를 보완하기 위해 호스팅 서비스를 설계해왔다고 밝혔다.  개발팀에 따르면 디노 디플로이는 AWS 람다(AWS Lamda)에서 실행되지 않으며 클라우드플레어 워커(Cloudflare Workers)를 사용하지도 않는 독특한 디자인의 새로운 시스템이다. 따라서 대략적인 초기 UI를 살펴보고 이 새로운 자바스크립트 런타임을 탐색하라고 디노 개발팀은 권고했다. 디노 디플로이에서 제공하는 기능은 다음과 같다. • URL을 통한 코드 배포 • 타입스크립트, JSX, ES 모듈 및 원격 HTTPS 가져오기 즉시 지원 • 실시간 통신을 위한 브로드캐스트 채널(Broadcast Channel) 지원(탭 간의 실시간 통신을 위한 브라우저 API인 브로드캐스트 채널 API는 서버측 자바스크립트에 적합하다고 디노 개발팀은 전했다.) • ...

2021.06.28

웹어셈블리를 활용한 유망한 프로그래밍 언어 프로젝트 10가지

현재의 웹 애플리케이션은 속도와 응답성 측면에서 네이티브 데스크톱 애플리케이션에 비할 바는 아니다. 하지만 대등해진다면 어떨까? 그게 웹어셈블리(WebAssembly)의 약속이다.   웹어셈블리는 어셈블리와 비슷한 저수준 언어로, 웹 브라우저에서 네이티브에 근접한 성능으로 실행되는 간소한 바이너리 형식을 갖고 있다. 또한 웹어셈블리는 C/C++, 러스트, 고, 코틀린, 스위프트 및 기타 프로그래밍 언어에 대한 이식 가능한 컴파일 타겟도 제공한다.   웹어셈블리는 웹 애플리케이션 성능을 높이고 브라우저 앱 개발에서 자바스크립트 이외의 언어를 사용할 수 있게 해준다는 두 가지 측면에서 기대를 모으고 있으며 구글, 모질라, 애플, 마이크로소프트의 지지를 받고 있다. 4개 조직 모두 각자의 브라우저 엔진에서 웹어셈블리 기술을 지원한다.   웹어셈블리는 그 성능을 활용하는 완전히 새로운 프로그래밍 언어를 포함한 여러 신기술 개발로 이어졌다. 다음은 웹어셈블리에 '올라탄' 10개 언어 프로젝트다.   바이너리엔(Binaryen) 바이너리엔은 웹어셈블리를 위한 컴파일러 툴체인 인프라 라이브러리다. C++로 작성됐고 웹어셈블리 컴파일을 쉽고 효과적으로, 빠르게 하도록 고안됐다. 단일 헤더에 C API가 있으며 자바스크립트에서 사용할 수 있다. 입력은 웹어셈블리와 비슷한 형식으로 받지만 제어 그래프를 선호하는 컴파일러에 대해서는 일반 제어 그래프도 받는다.   바이너리엔의 내부 IR(Intermediate Representation)은 컴팩트한 데이터 구조를 사용하며 병렬 코드 생성과 최적화를 위해 모든 CPU 코어를 활용한다. IR도 기본적으로 웹어셈블리의 하위 집합이므로 손쉽게 웹어셈블리로 컴파일된다. 웹어셈블리를 위한 최적화는 코드 크기와 속도를 모두 개선하므로 바이너리엔은 그 자체로 컴파일러 백엔드로 유용하다.   깃허브에서 다운로드할 수 있다.   블레이저 웹어셈블리(Blazor WebAssembly) 블...

웹어셈블리 컴파일러 어셈블리 자바스크립트 프로그래밍언어

2021.06.07

현재의 웹 애플리케이션은 속도와 응답성 측면에서 네이티브 데스크톱 애플리케이션에 비할 바는 아니다. 하지만 대등해진다면 어떨까? 그게 웹어셈블리(WebAssembly)의 약속이다.   웹어셈블리는 어셈블리와 비슷한 저수준 언어로, 웹 브라우저에서 네이티브에 근접한 성능으로 실행되는 간소한 바이너리 형식을 갖고 있다. 또한 웹어셈블리는 C/C++, 러스트, 고, 코틀린, 스위프트 및 기타 프로그래밍 언어에 대한 이식 가능한 컴파일 타겟도 제공한다.   웹어셈블리는 웹 애플리케이션 성능을 높이고 브라우저 앱 개발에서 자바스크립트 이외의 언어를 사용할 수 있게 해준다는 두 가지 측면에서 기대를 모으고 있으며 구글, 모질라, 애플, 마이크로소프트의 지지를 받고 있다. 4개 조직 모두 각자의 브라우저 엔진에서 웹어셈블리 기술을 지원한다.   웹어셈블리는 그 성능을 활용하는 완전히 새로운 프로그래밍 언어를 포함한 여러 신기술 개발로 이어졌다. 다음은 웹어셈블리에 '올라탄' 10개 언어 프로젝트다.   바이너리엔(Binaryen) 바이너리엔은 웹어셈블리를 위한 컴파일러 툴체인 인프라 라이브러리다. C++로 작성됐고 웹어셈블리 컴파일을 쉽고 효과적으로, 빠르게 하도록 고안됐다. 단일 헤더에 C API가 있으며 자바스크립트에서 사용할 수 있다. 입력은 웹어셈블리와 비슷한 형식으로 받지만 제어 그래프를 선호하는 컴파일러에 대해서는 일반 제어 그래프도 받는다.   바이너리엔의 내부 IR(Intermediate Representation)은 컴팩트한 데이터 구조를 사용하며 병렬 코드 생성과 최적화를 위해 모든 CPU 코어를 활용한다. IR도 기본적으로 웹어셈블리의 하위 집합이므로 손쉽게 웹어셈블리로 컴파일된다. 웹어셈블리를 위한 최적화는 코드 크기와 속도를 모두 개선하므로 바이너리엔은 그 자체로 컴파일러 백엔드로 유용하다.   깃허브에서 다운로드할 수 있다.   블레이저 웹어셈블리(Blazor WebAssembly) 블...

2021.06.07

'자바스크립트용 센트리' 업데이트, 릴리스 상태 모니터링 지원

오류 모니터링 서비스 센트리가 지난 1월 27일(현지 시각) 애플리케이션 릴리스별로 상태를 추적하는 기능을 추가해 자바스크립트용 센트리(Sentry for JavaScript)를 업데이트했다고 밝혔다. 자바스크립트 오류 및 성능 모니터링용 SDK의 이번 업데이트는 웹어셈블리 지원도 제공한다.    회사에 따르면 이번에 업데이트된 ‘릴리스 상태(Release Health)’는 모바일 및 네이티브 애플리케이션 개발자가 잘못된 릴리스를 신속하게 평가하고 수정할 수 있는 조기 경고 시스템이다. 개발자는 활용 가능한 인사이트를 수집해 가장 크게 영향을 미치는 오류를 해결하고, 속도 저하를 검토하며, 시간 경과에 따라 릴리스가 문제없이 작동하는지 추적할 수 있다. 또 세션 데이터를 캡처하고, 세션 및 사용자별 충돌을 확인할 수 있다.  자바스크립트용 센트리 SDK는 아래의 코드 스니펫을 통해 릴리스 상태 기능을 업데이트할 수 있다.    # Using yarn yarn add @sentry/browser  @sentry/tracing # Using npm pm install --save @sentry/browser @sentry/tracing   이 밖에 자바스크립트용 센트리 SDK는 이번 업데이트에서 웹어셈블리 지원도 추가했다. 이제 자바스크립트용 센트리는 개발자가 DWARF 디버그 데이터를 생성할 수 있는 컴파일러를 사용할 때 서버에서 소스 코드를 포함한 충돌 보고서를 제공할 수 있다. DWARF는 문서화된 디버깅 표준을 제공하며, 실행 파일 또는 객체 파일에 DWARF 데이터가 내장돼 있다.  센트리는 자바스크립트용 센트리의 무료 체험판을 제공하고 있다. 또한 앵귤러(Angular), 리액트(React), 뷰(Vue), 웹어셈블리(WebAssembly) 및 기타 프레임워크와 함께 SDK를 사용하기 위한 프레임워크별 가이드도 지원한다...

센트리 오류 모니터링 자바스크립트 애플리케이션 웹어셈블리

2021.01.28

오류 모니터링 서비스 센트리가 지난 1월 27일(현지 시각) 애플리케이션 릴리스별로 상태를 추적하는 기능을 추가해 자바스크립트용 센트리(Sentry for JavaScript)를 업데이트했다고 밝혔다. 자바스크립트 오류 및 성능 모니터링용 SDK의 이번 업데이트는 웹어셈블리 지원도 제공한다.    회사에 따르면 이번에 업데이트된 ‘릴리스 상태(Release Health)’는 모바일 및 네이티브 애플리케이션 개발자가 잘못된 릴리스를 신속하게 평가하고 수정할 수 있는 조기 경고 시스템이다. 개발자는 활용 가능한 인사이트를 수집해 가장 크게 영향을 미치는 오류를 해결하고, 속도 저하를 검토하며, 시간 경과에 따라 릴리스가 문제없이 작동하는지 추적할 수 있다. 또 세션 데이터를 캡처하고, 세션 및 사용자별 충돌을 확인할 수 있다.  자바스크립트용 센트리 SDK는 아래의 코드 스니펫을 통해 릴리스 상태 기능을 업데이트할 수 있다.    # Using yarn yarn add @sentry/browser  @sentry/tracing # Using npm pm install --save @sentry/browser @sentry/tracing   이 밖에 자바스크립트용 센트리 SDK는 이번 업데이트에서 웹어셈블리 지원도 추가했다. 이제 자바스크립트용 센트리는 개발자가 DWARF 디버그 데이터를 생성할 수 있는 컴파일러를 사용할 때 서버에서 소스 코드를 포함한 충돌 보고서를 제공할 수 있다. DWARF는 문서화된 디버깅 표준을 제공하며, 실행 파일 또는 객체 파일에 DWARF 데이터가 내장돼 있다.  센트리는 자바스크립트용 센트리의 무료 체험판을 제공하고 있다. 또한 앵귤러(Angular), 리액트(React), 뷰(Vue), 웹어셈블리(WebAssembly) 및 기타 프레임워크와 함께 SDK를 사용하기 위한 프레임워크별 가이드도 지원한다...

2021.01.28

서버측 웹어셈블리 런타임 ‘와스머’, GA 버전 공개

빠른 컴파일과 프로덕션-준비 성능을 제공하는 ‘와스머(Wasmer)’ 버전 1.0을 사용하면 네이티브 코드에서 컴파일된 범용 바이너리를 여러 호스트 플랫폼의 경량 컨테이너에서 실행할 수 있다.  웹어셈블리 포터블 바이너리 포맷을 지원하는 서버측 오픈소스 런타임 ‘와스머’가 지난 1월 5일(현지 시각) GA 버전을 공개했다.    와스머는 소프트웨어 컨테이너화에 웹어셈블리를 활용하여 C++, 러스트, 고랭, 파이썬 및 다른 개발 언어로 컴파일된 범용 바이너리를 수정 없이 다른 운영체제와 웹 브라우저에서 실행할 수 있다.  와스머 개발팀의 사이러스 아크바리는 공식 블로그를 통해 “런타임과 컴파일러 성능이 굉장히 뛰어나다”라고 언급하면서, “웹어셈블리 또는 짧게 말해서 Wasm이 소프트웨어 실행 및 컨테이너화의 미래를 위한 중요한 구성요소가 될 것이다”라고 말했다.  와스머는 데스크톱부터 클라우드, IoT, 모바일 기기까지 다양한 플랫폼(리눅스, 맥 OS, 윈도우, 안드로이드, iOS)에서 웹어셈블리 기반 경량 컨테이너를 실행할 수 있으며, 이러한 컨테이너를 모든 프로그래밍 언어에 임베디드할 수 있다. 또한 와스머 런타임은 엔진엑스(Nginx) 웹 서버와 다른 웹어셈블리 모듈을 실행할 수 있다.  와스머 버전 1.0의 다른 기능은 다음과 같다.  • Wasm 파일을 미리 컴파일하기 위한 네이티브 개체 엔진 • IoT 사용 사례에 적합한 헤드리스 와스머(Headless Wasmer)  • 크로스 컴파일  • 확장 가능한 API • Wasm-C-API 지원 • 오류 처리 및 디버깅  • 프로덕션 준비 성능  • JIT ‘폭탄(bombs)’에 영향을 받지 않는 고속 컴파일 시간에 적합한 ‘단일패스(Singlepass)’ 컴파일러를 비롯해 크레인리프트(Cranelift)와 LLVM 등의 플러그형 인프라가 지원된다.  • ARM 기반 애플 실리콘 하드웨어 ...

웹어셈블리 컨테이너화 와스머 컴파일러

2021.01.08

빠른 컴파일과 프로덕션-준비 성능을 제공하는 ‘와스머(Wasmer)’ 버전 1.0을 사용하면 네이티브 코드에서 컴파일된 범용 바이너리를 여러 호스트 플랫폼의 경량 컨테이너에서 실행할 수 있다.  웹어셈블리 포터블 바이너리 포맷을 지원하는 서버측 오픈소스 런타임 ‘와스머’가 지난 1월 5일(현지 시각) GA 버전을 공개했다.    와스머는 소프트웨어 컨테이너화에 웹어셈블리를 활용하여 C++, 러스트, 고랭, 파이썬 및 다른 개발 언어로 컴파일된 범용 바이너리를 수정 없이 다른 운영체제와 웹 브라우저에서 실행할 수 있다.  와스머 개발팀의 사이러스 아크바리는 공식 블로그를 통해 “런타임과 컴파일러 성능이 굉장히 뛰어나다”라고 언급하면서, “웹어셈블리 또는 짧게 말해서 Wasm이 소프트웨어 실행 및 컨테이너화의 미래를 위한 중요한 구성요소가 될 것이다”라고 말했다.  와스머는 데스크톱부터 클라우드, IoT, 모바일 기기까지 다양한 플랫폼(리눅스, 맥 OS, 윈도우, 안드로이드, iOS)에서 웹어셈블리 기반 경량 컨테이너를 실행할 수 있으며, 이러한 컨테이너를 모든 프로그래밍 언어에 임베디드할 수 있다. 또한 와스머 런타임은 엔진엑스(Nginx) 웹 서버와 다른 웹어셈블리 모듈을 실행할 수 있다.  와스머 버전 1.0의 다른 기능은 다음과 같다.  • Wasm 파일을 미리 컴파일하기 위한 네이티브 개체 엔진 • IoT 사용 사례에 적합한 헤드리스 와스머(Headless Wasmer)  • 크로스 컴파일  • 확장 가능한 API • Wasm-C-API 지원 • 오류 처리 및 디버깅  • 프로덕션 준비 성능  • JIT ‘폭탄(bombs)’에 영향을 받지 않는 고속 컴파일 시간에 적합한 ‘단일패스(Singlepass)’ 컴파일러를 비롯해 크레인리프트(Cranelift)와 LLVM 등의 플러그형 인프라가 지원된다.  • ARM 기반 애플 실리콘 하드웨어 ...

2021.01.08

"다중값 지원" 웹어셈블리, 대대적 변화 예고

웹 애플리케이션의 속도를 높이는 바이너리 포맷인 웹어셈블리(WebAssembly)가 다중값을 지원할 예정이다. 다양한 값을 반환하는 함수를 구현하고 코드 크기를 줄이는 것은 물론 새로운 명령어도 사용할 수 있게 될 전망이다. 이번 새로운 기능 제안은 기존 함수의 제약사항을 해소하기 위한 것이다. 현재는 0 혹은 1 값 만 반환할 수 있다. blocks, ifs, loops 같은 명령 구문도 여러 스택 값을 사용할 수 없고 0 혹은 단일 스택 값만 생성할 수 있다. 모질라(Mozilla)와 바이트코드 얼라이언스(Bytecode Alliance)에 따르면, 이런 제한이 사라지면 함수가 임의의 숫자 값을 반환할 수 있다. 명령 구문도 스택 값의 임의의 숫자를 만들 수 있게 된다. 또한 다중값은 레코드, 시퀀스, 스트링 같은 고수준 값을 표현하는 Wasm 인터페이스 형식의 필수 요건이기도 하다. 이번에 다중값을 지원하기로 한 또 다른 이유는 함수가 다양한 값을 동시에 반환해야 값에 따른 터플이나 스트럭트 언박싱이나 다양한 반환 값의 효과적인 컴파일이 가능해지기 때문이다. 깃허브 자료에 따르면, 루프 라벨이 인수를 가질 수 있고 입력 명령에 대한 매크로 정의도 가능해진다. 다중값을 지원한다고 해도 언어의 구조와 텍스트 형식은 대부분 영향을 받지 않는다. 반면 바이러니 포맷은 함수 형태를 블록으로 정할 수 있도록 수정이 필요하다. 또한, 현재의 애드훅 인코딩은 레퍼런스가 함수 타입을 지원하도록 확장해야 한다. 개발자인 닉 핏즈제럴드는 "이번 다중값 지원 추가는 러스트와 웹어셈블리 툴체인은 물론 Wasmtime 웹어셈블리 런타임을 강화하기 위한 것이다"라고 말했다. ciokr@idg.co.kr  

개발자 웹어셈블리 다중값

2019.11.29

웹 애플리케이션의 속도를 높이는 바이너리 포맷인 웹어셈블리(WebAssembly)가 다중값을 지원할 예정이다. 다양한 값을 반환하는 함수를 구현하고 코드 크기를 줄이는 것은 물론 새로운 명령어도 사용할 수 있게 될 전망이다. 이번 새로운 기능 제안은 기존 함수의 제약사항을 해소하기 위한 것이다. 현재는 0 혹은 1 값 만 반환할 수 있다. blocks, ifs, loops 같은 명령 구문도 여러 스택 값을 사용할 수 없고 0 혹은 단일 스택 값만 생성할 수 있다. 모질라(Mozilla)와 바이트코드 얼라이언스(Bytecode Alliance)에 따르면, 이런 제한이 사라지면 함수가 임의의 숫자 값을 반환할 수 있다. 명령 구문도 스택 값의 임의의 숫자를 만들 수 있게 된다. 또한 다중값은 레코드, 시퀀스, 스트링 같은 고수준 값을 표현하는 Wasm 인터페이스 형식의 필수 요건이기도 하다. 이번에 다중값을 지원하기로 한 또 다른 이유는 함수가 다양한 값을 동시에 반환해야 값에 따른 터플이나 스트럭트 언박싱이나 다양한 반환 값의 효과적인 컴파일이 가능해지기 때문이다. 깃허브 자료에 따르면, 루프 라벨이 인수를 가질 수 있고 입력 명령에 대한 매크로 정의도 가능해진다. 다중값을 지원한다고 해도 언어의 구조와 텍스트 형식은 대부분 영향을 받지 않는다. 반면 바이러니 포맷은 함수 형태를 블록으로 정할 수 있도록 수정이 필요하다. 또한, 현재의 애드훅 인코딩은 레퍼런스가 함수 타입을 지원하도록 확장해야 한다. 개발자인 닉 핏즈제럴드는 "이번 다중값 지원 추가는 러스트와 웹어셈블리 툴체인은 물론 Wasmtime 웹어셈블리 런타임을 강화하기 위한 것이다"라고 말했다. ciokr@idg.co.kr  

2019.11.29

'바이트코드 얼라이언스' 출범··· "웹어셈블리를 브라우저 밖으로"

업계가 '브라우저를 벗어난 웹어셈블리(WebAssembly)'라는 개념을 실현하기 위해 손을 맞잡았다. 최근 새로 만들어진 한 업계 그룹은 이를 위한 표준을 적용하는데 협력하는 한편 오픈소스 포터블 바이트코드 포맷용 대안을 제안할 예정이다. 이 파트너십의 이름은 바이트코드 얼라이언스(Bytecode Alliance)다. 모질라와 레드햇, 인텔, 페스트리(Fastly)가 창립 멤버로 참여했다. 웹어셈블리는 본래 브라우저에서 작동하는 바이너리 포맷이다. 웹 애플리케이션을 준 네이티브 성능으로 실행할 수 있다. 자바스크립트 외에 다른 언어를 사용해 개발할 수 있는 것도 장점이다. 웹어셈블리의 또 다른 장점은 실행 중인 신뢰할 수 없는 코드를 격리하는 기능이다. 각 웹어셈블리 모듈은 기본적으로 샌드박스로 실행된다. 바이트코드 얼라이언스는 이러한 보안 측면의 장점을 확장해 서버와 클라우드 데스크톱은 물론 IoT 기기 등 모든 플랫폼에서 신뢰할 수 없는 코드를 사용해도 안전할 수 있도록 지원한다는 구상이다. 바이트코드 얼라이언스의 또 다른 목표는 마이크로서비스를 컨테이너와 비슷한 나노프로세스(nanoprocesses)로 대체하는 것이다. 나노프로세스는 무겁지 않게 마이크로서비스의 이식성을 구현하고 동시에 언어 간 상호운용성까지 지원한다. 이런 특성을 이용하면 대규모 모듈 애플리케이션을 개발하는 것도 가능하다. 이밖에 바이트코드 얼라이언스 참여 기업은 다음과 같은 여러 프로젝트에서 협업하고 있다. - Wasmtime을 포함한 런타임. CLI 툴에서 사용하거나 혹은 다른 시스템에 임베디드해 쓸 수 있는 독립형 웹어셈블리 런타임이다. 이밖에 CDN용 런타임 러시트(Lucet)도 개발하고 있다. Wasmtime과 함께 작동하도록 재설계됐다. 또한 도켓(docket)에서 실행되는 리소스가 제한된 임베디드 기기용 웹어셈블리 마이크로 런타임도 있다. - 크레인리프트(Cranelift)를 포함한 런타임 컴포넌트. 머신 코드에 최적화된 코드 제너레이터와 웹어셈블리 시스템 인터페...

웹어셈블리 바이트코드 얼라이언스

2019.11.14

업계가 '브라우저를 벗어난 웹어셈블리(WebAssembly)'라는 개념을 실현하기 위해 손을 맞잡았다. 최근 새로 만들어진 한 업계 그룹은 이를 위한 표준을 적용하는데 협력하는 한편 오픈소스 포터블 바이트코드 포맷용 대안을 제안할 예정이다. 이 파트너십의 이름은 바이트코드 얼라이언스(Bytecode Alliance)다. 모질라와 레드햇, 인텔, 페스트리(Fastly)가 창립 멤버로 참여했다. 웹어셈블리는 본래 브라우저에서 작동하는 바이너리 포맷이다. 웹 애플리케이션을 준 네이티브 성능으로 실행할 수 있다. 자바스크립트 외에 다른 언어를 사용해 개발할 수 있는 것도 장점이다. 웹어셈블리의 또 다른 장점은 실행 중인 신뢰할 수 없는 코드를 격리하는 기능이다. 각 웹어셈블리 모듈은 기본적으로 샌드박스로 실행된다. 바이트코드 얼라이언스는 이러한 보안 측면의 장점을 확장해 서버와 클라우드 데스크톱은 물론 IoT 기기 등 모든 플랫폼에서 신뢰할 수 없는 코드를 사용해도 안전할 수 있도록 지원한다는 구상이다. 바이트코드 얼라이언스의 또 다른 목표는 마이크로서비스를 컨테이너와 비슷한 나노프로세스(nanoprocesses)로 대체하는 것이다. 나노프로세스는 무겁지 않게 마이크로서비스의 이식성을 구현하고 동시에 언어 간 상호운용성까지 지원한다. 이런 특성을 이용하면 대규모 모듈 애플리케이션을 개발하는 것도 가능하다. 이밖에 바이트코드 얼라이언스 참여 기업은 다음과 같은 여러 프로젝트에서 협업하고 있다. - Wasmtime을 포함한 런타임. CLI 툴에서 사용하거나 혹은 다른 시스템에 임베디드해 쓸 수 있는 독립형 웹어셈블리 런타임이다. 이밖에 CDN용 런타임 러시트(Lucet)도 개발하고 있다. Wasmtime과 함께 작동하도록 재설계됐다. 또한 도켓(docket)에서 실행되는 리소스가 제한된 임베디드 기기용 웹어셈블리 마이크로 런타임도 있다. - 크레인리프트(Cranelift)를 포함한 런타임 컴포넌트. 머신 코드에 최적화된 코드 제너레이터와 웹어셈블리 시스템 인터페...

2019.11.14

"웹어셈블리 앱을 브라우저 밖으로"··· 모질라, 'WASI' 개발 프로젝트 공개

모질라(Mozilla)가 새로운 표준화 프로젝트를 발표했다. 웹어셈블리 애플리케이션이 운영체제와 지속해서 접속하는 기능을 지원한다는 구상이다.  이 프로젝트의 이름은 WASI(WebAssembly System Interface)다. 파일 읽기와 쓰기, 네트워크 I/O 같은 작업을 수행하는 추상화 셋을 포함해 웹어셈블리 애플리케이션을 제공하는 것이 목적이다. 각 웹어셈블리 호스트가 해당 웹어셈블리 애플리케이션을 실행하는 플랫폼에 따라 WASI를 실행하는 방식이다. 모질라에 따르면, WASI의 가장 큰 특징은 플랫폼 독립적이라는 점이다. 예를 들어 C 같은 언어는 파일 시스템과 메모리와 접속하는 표준 라이브러리를 제공한다. WASI 역시 비슷한 방식으로 파일 또는 네트워크 소켓을 위한 크로스 플랫폼 추상화 표준 라이브러리 역할을 하게 된다. WASI의 또 다른 특징은 이러한 작업을 샌드박스 형태로 실행한다는 점이다. 예를 들어 파일 액세스 작업이라면, 애플리케이션이 명백하게 읽기, 쓰기 권한을 가진 디렉터리에 대해서만 파일을 여는 WASI 호출이 작동한다. 이러한 권한을 모듈 단위로 제한하는 것도 가능하다. WASI를 사용하려면 기존 웹어셈블리를 재컴파일해야 한다. 다행히 웹어셈블리 역시 아직 개발 초기 단계여서 이러한 변화가 큰 혼란으로 이어지지는 않을 것으로 보인다. 러스트(Rust)와 C/C++ 등 현재 웹어셈블리 앱 개발에 가장 널리 사용하는 툴 2가지는 이미 WASI를 지원한다. LLVM를 이용해 WASI를 지원하는 웹어셈블리 코드를 생성하는 방식이다. 현재 상태에서 WASI 앱을 실행하려면 브라우저가 웹어셈블리를 지원하는 것 이상이 필요하다. 한 가지 방법은 브라우저 기반 폴리필(polyfill)을 이용하는 것이다. 자바스크립트의 실험적 기능에서 사용하는 것과 같은 방식이다. 두 번째 방법은 브라우저를 사용하지 않는 단독형 웹어셈블리 런타임인 wasmtime을 쓰는 것이다. 또 다른 단독형 런타임인 루싯(Lucet)을 사용하는 방법도 있...

개발자 모질라 웹어셈블리 WASI

2019.03.29

모질라(Mozilla)가 새로운 표준화 프로젝트를 발표했다. 웹어셈블리 애플리케이션이 운영체제와 지속해서 접속하는 기능을 지원한다는 구상이다.  이 프로젝트의 이름은 WASI(WebAssembly System Interface)다. 파일 읽기와 쓰기, 네트워크 I/O 같은 작업을 수행하는 추상화 셋을 포함해 웹어셈블리 애플리케이션을 제공하는 것이 목적이다. 각 웹어셈블리 호스트가 해당 웹어셈블리 애플리케이션을 실행하는 플랫폼에 따라 WASI를 실행하는 방식이다. 모질라에 따르면, WASI의 가장 큰 특징은 플랫폼 독립적이라는 점이다. 예를 들어 C 같은 언어는 파일 시스템과 메모리와 접속하는 표준 라이브러리를 제공한다. WASI 역시 비슷한 방식으로 파일 또는 네트워크 소켓을 위한 크로스 플랫폼 추상화 표준 라이브러리 역할을 하게 된다. WASI의 또 다른 특징은 이러한 작업을 샌드박스 형태로 실행한다는 점이다. 예를 들어 파일 액세스 작업이라면, 애플리케이션이 명백하게 읽기, 쓰기 권한을 가진 디렉터리에 대해서만 파일을 여는 WASI 호출이 작동한다. 이러한 권한을 모듈 단위로 제한하는 것도 가능하다. WASI를 사용하려면 기존 웹어셈블리를 재컴파일해야 한다. 다행히 웹어셈블리 역시 아직 개발 초기 단계여서 이러한 변화가 큰 혼란으로 이어지지는 않을 것으로 보인다. 러스트(Rust)와 C/C++ 등 현재 웹어셈블리 앱 개발에 가장 널리 사용하는 툴 2가지는 이미 WASI를 지원한다. LLVM를 이용해 WASI를 지원하는 웹어셈블리 코드를 생성하는 방식이다. 현재 상태에서 WASI 앱을 실행하려면 브라우저가 웹어셈블리를 지원하는 것 이상이 필요하다. 한 가지 방법은 브라우저 기반 폴리필(polyfill)을 이용하는 것이다. 자바스크립트의 실험적 기능에서 사용하는 것과 같은 방식이다. 두 번째 방법은 브라우저를 사용하지 않는 단독형 웹어셈블리 런타임인 wasmtime을 쓰는 것이다. 또 다른 단독형 런타임인 루싯(Lucet)을 사용하는 방법도 있...

2019.03.29

컴파일러 프레임워크 'LLVM 8' 발표··· 웹어셈블리 코드 생성 기능 기본 적용

LLVM 프로젝트가 LLVM 8을 정식 공개했다. LLVM은 클랭(Clang) C/C++ 컴파일러를 강화하는 컴파일러 프레임워크이자 러스트(Rust)와 스위프트(Swift) 같은 언어를 위한 컴파일러다.   이번 최신 버전의 가장 큰 특징은 웹어셈블리(WebAssembly) 코드 생성 기능이 테스트 상태에서 벗어나 기본으로 적용된 것이다. 이 컴파일러는 이미 LLVM의 웹어셈블리 코드 생성 툴을 임시로 사용해 왔다. 예를 들어 (일부 추가 작업이 필요하긴 하지만) 러스트를 웹어셈블리로 컴파일할 수 있었다. 그러나 이번에 웹어셈블리용 LLVM을 실제 기업 시스템에서 사용할 수 있음을 공식화했다. 물론 웹어셈블리 자체는 아직 초기 단계의 기술이다. 그러나 이번 발표는 자바스크립트 외에 다른 언어로 만든 코드를 자유롭게 컴파일해 브라우저에서 실행하는 단계로 나아가는 중요한 이정표가 될 전망이다.   이밖에 LLVM 8에서는 인텔 캐스케이드 레이크 칩셋으로 컴파일할 수 있고, 명령줄 플래그 방식을 추가로 지원한다. 이는 근본적으로 기존의 인텔 스카이레이크 칩셋에 대한 지원과 같다. 그러나 인텔 제온 파이와 제온 스케일어블 프로세서에서 사용할 수 있는 새로운 AVX-512 명령 세트의 일부인 VNNI(Vector Neural Network Instructions) 출력을 지원하는 것에 차이가 있다. VNNI는 그 이름에서 알 수 있는 것처럼 GPU 가속이 불가능한 인텔 시스템 환경에서 딥러닝 워크로드 처리 속도를 높이기 위한 명령어다.   LLVM 코드 생성은 CPU에 제한되지 않는다. LLVM 8은 AMDGPU 백엔드용 코드 생성 기능도 강화했다. 이를 이용하면 LLVM 코드를 오픈소스 라데온(Radeon) 그래픽 스택용으로 생성할 수 있다. 베가(Vega) 시리즈 같은 새 AMD GPU는 AMDGPU 지원이 가장 큰 혜택이 될 것으로 보인다. IBM 파워 프로세서, 특히 파워9에 맞춘 코드 생성도 개선됐다. LLVM의 MIPS/MIP64 ...

컴파일러 웹어셈블리 LLVM

2019.03.21

LLVM 프로젝트가 LLVM 8을 정식 공개했다. LLVM은 클랭(Clang) C/C++ 컴파일러를 강화하는 컴파일러 프레임워크이자 러스트(Rust)와 스위프트(Swift) 같은 언어를 위한 컴파일러다.   이번 최신 버전의 가장 큰 특징은 웹어셈블리(WebAssembly) 코드 생성 기능이 테스트 상태에서 벗어나 기본으로 적용된 것이다. 이 컴파일러는 이미 LLVM의 웹어셈블리 코드 생성 툴을 임시로 사용해 왔다. 예를 들어 (일부 추가 작업이 필요하긴 하지만) 러스트를 웹어셈블리로 컴파일할 수 있었다. 그러나 이번에 웹어셈블리용 LLVM을 실제 기업 시스템에서 사용할 수 있음을 공식화했다. 물론 웹어셈블리 자체는 아직 초기 단계의 기술이다. 그러나 이번 발표는 자바스크립트 외에 다른 언어로 만든 코드를 자유롭게 컴파일해 브라우저에서 실행하는 단계로 나아가는 중요한 이정표가 될 전망이다.   이밖에 LLVM 8에서는 인텔 캐스케이드 레이크 칩셋으로 컴파일할 수 있고, 명령줄 플래그 방식을 추가로 지원한다. 이는 근본적으로 기존의 인텔 스카이레이크 칩셋에 대한 지원과 같다. 그러나 인텔 제온 파이와 제온 스케일어블 프로세서에서 사용할 수 있는 새로운 AVX-512 명령 세트의 일부인 VNNI(Vector Neural Network Instructions) 출력을 지원하는 것에 차이가 있다. VNNI는 그 이름에서 알 수 있는 것처럼 GPU 가속이 불가능한 인텔 시스템 환경에서 딥러닝 워크로드 처리 속도를 높이기 위한 명령어다.   LLVM 코드 생성은 CPU에 제한되지 않는다. LLVM 8은 AMDGPU 백엔드용 코드 생성 기능도 강화했다. 이를 이용하면 LLVM 코드를 오픈소스 라데온(Radeon) 그래픽 스택용으로 생성할 수 있다. 베가(Vega) 시리즈 같은 새 AMD GPU는 AMDGPU 지원이 가장 큰 혜택이 될 것으로 보인다. IBM 파워 프로세서, 특히 파워9에 맞춘 코드 생성도 개선됐다. LLVM의 MIPS/MIP64 ...

2019.03.21

'웹의 미래' 최신 웹어셈블리 툴 8가지

웹어셈블리(WebAssembly), 일명 Wasm은 브라우저 안에서 코드를 실행하고 웹에서 자바스크립트 외에 다른 언어를 지원하며 애플리케이션의 속도를 높인다. 툴 생태계도 발전하고 있고 브라우저 개발사인 애플, 구글, 마이크로소프트, 모질라가 이를 지원한다. 기존 웹어셈블리 툴 중에서는 웹어셈블리 해석기를 제공하는 Rust-wasm, 웹어셈블리 바이너리 파일 읽기 및 쓰기를 위한 C# 라이브러리인 Wasmlib 등이 유명하다. 하지만 더 많은 툴이 웹어셈블리 생태계를 풍부하게 하고 있다. 살펴볼만한 새로운 툴 8종 정리했다. 라이프(Life) 클라우드 마켓 펄린(Perlin)의 라이프 프로젝트는 구글의 고(Go) 언어로 작성된 교차 플랫폼 VM으로 구성된다. 안전하고 빠르며 모듈식이며, 여러 기기에서 높은 연산력이 요구되는 코드를 실행한다. 본래 펄린에서 연산 작업을 위한 실행 환경으로 개발됐지만 웹어셈블리 레퍼런스 매뉴얼에 따라 수정됐고 일련의 최적화 기법을 사용한다. 네이티브에 대한 의존성이 없으며 교차 컴파일을 통해 윈도우, 리눅스, 맥OS, 안드로이드, iOS 등에서 실행할 수 있다. 사용자 코드는 보안을 위해 샌드박스 처리된다. 펠린 깃허브 저장소에서 다운로드할 수 있다. 네뷸렛(Nebulet) 현재 개발 중인 마이크로커널(Microkernel)로, 성능을 높이기 위해 링(Ring) 0 및 단일 주소 공간에서 웹어셈블리 모듈을 실행한다. 네뷸렛은 일부 작업 부하, 특히 서버와 관련된 작업에서 뛰어난 성능을 보여준다. 단, 링 0에서 모듈을 구동하면 보안 플래그가 올라갈 수 있으며 스펙터, 멜트다운, 실행 버그에 대한 우려가 증가할 수 있다. 이는 설립자 라클란 스네프도 인정하는 단점인데, 문제가 얼마나 커질지는 알 수 없는 상황이다. 2018년 구글 SoC(Summer of Code) 프로젝트에서 네뷸렛은 하위 컨텍스트 스위치 오버헤드, 기능 호출로 시스템 호출, 일반적인 운영체제에서는 불가능한 최적화 등을 지원했다. 크레인리프트(Cran...

개발자 웹어셈블리

2018.12.18

웹어셈블리(WebAssembly), 일명 Wasm은 브라우저 안에서 코드를 실행하고 웹에서 자바스크립트 외에 다른 언어를 지원하며 애플리케이션의 속도를 높인다. 툴 생태계도 발전하고 있고 브라우저 개발사인 애플, 구글, 마이크로소프트, 모질라가 이를 지원한다. 기존 웹어셈블리 툴 중에서는 웹어셈블리 해석기를 제공하는 Rust-wasm, 웹어셈블리 바이너리 파일 읽기 및 쓰기를 위한 C# 라이브러리인 Wasmlib 등이 유명하다. 하지만 더 많은 툴이 웹어셈블리 생태계를 풍부하게 하고 있다. 살펴볼만한 새로운 툴 8종 정리했다. 라이프(Life) 클라우드 마켓 펄린(Perlin)의 라이프 프로젝트는 구글의 고(Go) 언어로 작성된 교차 플랫폼 VM으로 구성된다. 안전하고 빠르며 모듈식이며, 여러 기기에서 높은 연산력이 요구되는 코드를 실행한다. 본래 펄린에서 연산 작업을 위한 실행 환경으로 개발됐지만 웹어셈블리 레퍼런스 매뉴얼에 따라 수정됐고 일련의 최적화 기법을 사용한다. 네이티브에 대한 의존성이 없으며 교차 컴파일을 통해 윈도우, 리눅스, 맥OS, 안드로이드, iOS 등에서 실행할 수 있다. 사용자 코드는 보안을 위해 샌드박스 처리된다. 펠린 깃허브 저장소에서 다운로드할 수 있다. 네뷸렛(Nebulet) 현재 개발 중인 마이크로커널(Microkernel)로, 성능을 높이기 위해 링(Ring) 0 및 단일 주소 공간에서 웹어셈블리 모듈을 실행한다. 네뷸렛은 일부 작업 부하, 특히 서버와 관련된 작업에서 뛰어난 성능을 보여준다. 단, 링 0에서 모듈을 구동하면 보안 플래그가 올라갈 수 있으며 스펙터, 멜트다운, 실행 버그에 대한 우려가 증가할 수 있다. 이는 설립자 라클란 스네프도 인정하는 단점인데, 문제가 얼마나 커질지는 알 수 없는 상황이다. 2018년 구글 SoC(Summer of Code) 프로젝트에서 네뷸렛은 하위 컨텍스트 스위치 오버헤드, 기능 호출로 시스템 호출, 일반적인 운영체제에서는 불가능한 최적화 등을 지원했다. 크레인리프트(Cran...

2018.12.18

"속도 만으로도 치명적 매력"··· 차세대 웹 플랫폼 '웹어셈블리'

지난 20여년간 웹 브라우저에서는 단 하나의 프로그래밍 공용어만 허용됐다. 바로 자바스크립트다. 특히 서드 파티 바이너리 플러그-인의 사망 선고와 함께 다른 언어를 사용할 가능성조차 완전히 사라졌다. 웹 개발에 있어서 자바나 플래시의 액션 스크립트 같은 다른 언어의 싹을 잘라 버린 것이다. 커피스크립트(CoffeeScript) 같은 다른 웹 언어가 있지만 근본적으로 자바스크립트로 컴파일된다. 그런데 이제 새로운 길이 열렸다. 웹어셈블리(WebAssembly), 또는 WASM이라 불리는 어셈블리 언어 덕분이다. 웹어셈블리는 웹 애플리케이션의 거의 네이티브로 실행되며 빠르고 간결한 바이너리 포맷 역할을 한다. 뿐만 아니라 자바스크립트는 물론이고 모든 언어를 컴파일 할 수 있도록 설계됐다. 거의 모든 메이저 브라우저가 웹어셈블리를 지원하므로, 이제는 웹어셈블리를 통해 컴파일 할 수 있는 클라이언트 측 앱 개발에 대해 진지하게 생각해 보아야 할 시점이다. 그렇다고 웹어셈블리 앱이 자바스크립트 앱을 대체하는 것은 아니다. 적어도 지금까지는 그렇다. 웹어셈블리는 자바스크립트의 동반자에 더 가깝다. 자바스크립트가 유연하고 역동적이고, 인간이 읽을 수 있는 소스코드를 통해 전달된다면, 웹어셈블리는 더 빠르고 강력하며, 컴팩트한 바이너리 형식으로 전달된다. 개발자는 이제 게임이나 음악 스트리밍, 비디오 편집, 그리고 CAD 애플리케이션 같이 무거운 작업을 할 때 웹어셈블리를 당연히 고려해야 한다. 웹어셈블리 작동 원리 W3C에서 개발한 웹어셈블리는 (그 제작자들의 표현대로) '컴파일링 타깃(compilation target)'이다. 즉, 개발자가 직접 웹어셈블리를 사용하지 않는다. 개발자는 자신이 원하는 언어로 소스코드를 작성하고, 그 후에 이를 웹어셈블리 바이트코드로 컴파일하게 된다. 이후 이 바이트코드는 클라이언트(아마도 웹 브라우저)에서 기기 고유의 코드로 해석된 후 더 빠르게 실행된다. 웹어셈블리 코드는 로드와 파스(pars...

자바스크립트 웹어셈블리

2018.08.03

지난 20여년간 웹 브라우저에서는 단 하나의 프로그래밍 공용어만 허용됐다. 바로 자바스크립트다. 특히 서드 파티 바이너리 플러그-인의 사망 선고와 함께 다른 언어를 사용할 가능성조차 완전히 사라졌다. 웹 개발에 있어서 자바나 플래시의 액션 스크립트 같은 다른 언어의 싹을 잘라 버린 것이다. 커피스크립트(CoffeeScript) 같은 다른 웹 언어가 있지만 근본적으로 자바스크립트로 컴파일된다. 그런데 이제 새로운 길이 열렸다. 웹어셈블리(WebAssembly), 또는 WASM이라 불리는 어셈블리 언어 덕분이다. 웹어셈블리는 웹 애플리케이션의 거의 네이티브로 실행되며 빠르고 간결한 바이너리 포맷 역할을 한다. 뿐만 아니라 자바스크립트는 물론이고 모든 언어를 컴파일 할 수 있도록 설계됐다. 거의 모든 메이저 브라우저가 웹어셈블리를 지원하므로, 이제는 웹어셈블리를 통해 컴파일 할 수 있는 클라이언트 측 앱 개발에 대해 진지하게 생각해 보아야 할 시점이다. 그렇다고 웹어셈블리 앱이 자바스크립트 앱을 대체하는 것은 아니다. 적어도 지금까지는 그렇다. 웹어셈블리는 자바스크립트의 동반자에 더 가깝다. 자바스크립트가 유연하고 역동적이고, 인간이 읽을 수 있는 소스코드를 통해 전달된다면, 웹어셈블리는 더 빠르고 강력하며, 컴팩트한 바이너리 형식으로 전달된다. 개발자는 이제 게임이나 음악 스트리밍, 비디오 편집, 그리고 CAD 애플리케이션 같이 무거운 작업을 할 때 웹어셈블리를 당연히 고려해야 한다. 웹어셈블리 작동 원리 W3C에서 개발한 웹어셈블리는 (그 제작자들의 표현대로) '컴파일링 타깃(compilation target)'이다. 즉, 개발자가 직접 웹어셈블리를 사용하지 않는다. 개발자는 자신이 원하는 언어로 소스코드를 작성하고, 그 후에 이를 웹어셈블리 바이트코드로 컴파일하게 된다. 이후 이 바이트코드는 클라이언트(아마도 웹 브라우저)에서 기기 고유의 코드로 해석된 후 더 빠르게 실행된다. 웹어셈블리 코드는 로드와 파스(pars...

2018.08.03

웹어셈블리 온라인 IDE '어셈블리 스튜디오' 공개

모질라(Mozilla)가 웹어셈블리(WebAssembly) 포터블 코드 형식을 위한 온라인 IDE를 개발하고 있다. 베타 버전은 현재 테스트해 볼 수 있다. '어셈블리 스튜디오(WebAssembly Studio)'라는 이름의 이 IDE를 이용하면 개발자가 웹어셈블리에 대해 배우고 다른 사람을 가르칠 수 있다(웹어셈블리는 와즘(Wasm)이라고 부르기도 한다). 웹어셈블리 코드 포맷을 이용하면 웹 애플리케이션 성능이 향상되며 현재 모질라를 포함해 주요 브라우저가 이를 지원한다. 이 IDE 프로젝트는 2017년 말에 시작됐다. 기존의 툴인 '와즘익스플로러(WasmExplorer)'와 '와즘피들(WasmFiddle)'을 결합하는 방식이었다. 웹어셈블리 IDE의 주요 기능은 다음과 같다. - C, C++, 러스트(Rust) 언어 지원. 아직은 초기 단계의 지원이지만 곧 베타 단계로 넘어갈 예정이다. 컴파일은 주로 서버 사이드에서 이뤄지지만 클라이언트 사이드에서 더 많은 작업을 할 수 있도록 개선하고 있다. 웹어셈블리로 컴파일하는 모든 언어를 지원할 계획도 갖고 있다. - 웹어셈블리 바이너리 모듈과 테스트 파일에 대한 수정 - 문맥 메뉴로 다양한 기능을 지원하는 쉬운 사용성 - 임베디드 콘텐츠 시스템을 통한 웹어셈블리 스튜디오 프로젝트의 쌍방향 삽입 C와 C++를 위해 LLVM 컴파일러 백 엔드가 사용된다. 그러나 엠스크립튼 LLVM-자바스크립트 컴파일러는 아직 개발중이다. 또한 사용자 경험과 성능, 에러 리포팅도 개선할 예정이며 다른 툴처럼 웹어셈블리 스튜디오 프로젝트를 로컬에서 만들어 다운로드하는 기능도 추가된다. 웹어셈블리 스튜디오 소스코드는 기트허브에서 다운로드할 수 있다. 온라인 테스트를 해보려면 웹사이트를 이용하면 된다. ciokr@idg.co.kr

모질라 웹어셈블리 어셈블리스튜디오

2018.04.18

모질라(Mozilla)가 웹어셈블리(WebAssembly) 포터블 코드 형식을 위한 온라인 IDE를 개발하고 있다. 베타 버전은 현재 테스트해 볼 수 있다. '어셈블리 스튜디오(WebAssembly Studio)'라는 이름의 이 IDE를 이용하면 개발자가 웹어셈블리에 대해 배우고 다른 사람을 가르칠 수 있다(웹어셈블리는 와즘(Wasm)이라고 부르기도 한다). 웹어셈블리 코드 포맷을 이용하면 웹 애플리케이션 성능이 향상되며 현재 모질라를 포함해 주요 브라우저가 이를 지원한다. 이 IDE 프로젝트는 2017년 말에 시작됐다. 기존의 툴인 '와즘익스플로러(WasmExplorer)'와 '와즘피들(WasmFiddle)'을 결합하는 방식이었다. 웹어셈블리 IDE의 주요 기능은 다음과 같다. - C, C++, 러스트(Rust) 언어 지원. 아직은 초기 단계의 지원이지만 곧 베타 단계로 넘어갈 예정이다. 컴파일은 주로 서버 사이드에서 이뤄지지만 클라이언트 사이드에서 더 많은 작업을 할 수 있도록 개선하고 있다. 웹어셈블리로 컴파일하는 모든 언어를 지원할 계획도 갖고 있다. - 웹어셈블리 바이너리 모듈과 테스트 파일에 대한 수정 - 문맥 메뉴로 다양한 기능을 지원하는 쉬운 사용성 - 임베디드 콘텐츠 시스템을 통한 웹어셈블리 스튜디오 프로젝트의 쌍방향 삽입 C와 C++를 위해 LLVM 컴파일러 백 엔드가 사용된다. 그러나 엠스크립튼 LLVM-자바스크립트 컴파일러는 아직 개발중이다. 또한 사용자 경험과 성능, 에러 리포팅도 개선할 예정이며 다른 툴처럼 웹어셈블리 스튜디오 프로젝트를 로컬에서 만들어 다운로드하는 기능도 추가된다. 웹어셈블리 스튜디오 소스코드는 기트허브에서 다운로드할 수 있다. 온라인 테스트를 해보려면 웹사이트를 이용하면 된다. ciokr@idg.co.kr

2018.04.18

"러스트-자바스크립트 호환성 강화"··· 모질라, 새 웹어셈블리 프로젝트 시작

모질라(Mozilla)가 자바스크립트와 러스트(Rust) 언어의 타입의 연결하는 이른바 'wasm-bindgen' 프로젝트를 진행중이다. 웹어셈블리(wasm) 포터블 코드 형식을 기반으로 한다. 이 프로젝트로 자바스크립트와 러스트 간의 호환성을 강화될 것으로 기대된다. 러스트는 웹어셈블리를 통해 자바스크립트와 같은 웹 언어 역할을 하게 된다. wasm-bindgen은 웹어셈블리 모듈과 자바스크립트 사이의 고수준 상호작용을 담당하며, 자바스크립트와 웹어셈블리는 스트링과 자바스크립트 오브젝트, 클래스 간에 통신할 수 있게 된다. wasm-bindgen의 주요 기능은 다음과 같다. - 웹어셈블리 호출로 자바 스크립트 구조, 함수, 오브젝트 내보내기. 개발자는 자바스크립트 메소드를 호출하고 속성에 접근할 수 있다. 러스트 코드에서 네이티브와 비슷한 환경을 제공한다. - 러스트 구조와 함수를 자바스크립트로 내보내기. 자바스크립트 class로 변환되는 러스트 struct를 내보낼 수 있다. 이후에 구조는 삭제할 수 있다. 현재 웹어셈블리는 4가지 타입만 지원한다. 2개 정수 타입과 2개 부동소수점 타입이다. 그러나 자바스크립트와 러스트 개발자는 종종 더 다양한 타입을 사용한다. 예를 들어 러스트 개발자는 오류 처리에 Result를 사용한다. wasm-bindgen을 이용하면 자바스크립트가 기호열 하나나 러스트 함수로 러스트 API를 호출할 수 있다. 이를 통해 자바스크립트 예외를 잡아낼 수 있다. 웹어셈블리와 자바스크립트 간의 불일치를 제거함으로써, 자바스크립트는 웹어셈블리 함수를 활용할 수 있게 되고 마찬가지로 웹어셈블리는 자바스크립트 함수를 사용할 수 있다. wasm-bindgen은 ECMA스크립트 모듈을 기반으로 러스트에 집중하고 있다. 그러나 장기적으로는 C와 C++ 같은 언어에도 사용할 수 있도록 지원할 계획이다. 단, 모질라에 따르면 이번 프로젝트는 아직 다른 언어까지 확장할 정도로 안정적인 단계는 아니다. 최종...

자바스크립트 모질라 웹어셈블리 러스트

2018.04.10

모질라(Mozilla)가 자바스크립트와 러스트(Rust) 언어의 타입의 연결하는 이른바 'wasm-bindgen' 프로젝트를 진행중이다. 웹어셈블리(wasm) 포터블 코드 형식을 기반으로 한다. 이 프로젝트로 자바스크립트와 러스트 간의 호환성을 강화될 것으로 기대된다. 러스트는 웹어셈블리를 통해 자바스크립트와 같은 웹 언어 역할을 하게 된다. wasm-bindgen은 웹어셈블리 모듈과 자바스크립트 사이의 고수준 상호작용을 담당하며, 자바스크립트와 웹어셈블리는 스트링과 자바스크립트 오브젝트, 클래스 간에 통신할 수 있게 된다. wasm-bindgen의 주요 기능은 다음과 같다. - 웹어셈블리 호출로 자바 스크립트 구조, 함수, 오브젝트 내보내기. 개발자는 자바스크립트 메소드를 호출하고 속성에 접근할 수 있다. 러스트 코드에서 네이티브와 비슷한 환경을 제공한다. - 러스트 구조와 함수를 자바스크립트로 내보내기. 자바스크립트 class로 변환되는 러스트 struct를 내보낼 수 있다. 이후에 구조는 삭제할 수 있다. 현재 웹어셈블리는 4가지 타입만 지원한다. 2개 정수 타입과 2개 부동소수점 타입이다. 그러나 자바스크립트와 러스트 개발자는 종종 더 다양한 타입을 사용한다. 예를 들어 러스트 개발자는 오류 처리에 Result를 사용한다. wasm-bindgen을 이용하면 자바스크립트가 기호열 하나나 러스트 함수로 러스트 API를 호출할 수 있다. 이를 통해 자바스크립트 예외를 잡아낼 수 있다. 웹어셈블리와 자바스크립트 간의 불일치를 제거함으로써, 자바스크립트는 웹어셈블리 함수를 활용할 수 있게 되고 마찬가지로 웹어셈블리는 자바스크립트 함수를 사용할 수 있다. wasm-bindgen은 ECMA스크립트 모듈을 기반으로 러스트에 집중하고 있다. 그러나 장기적으로는 C와 C++ 같은 언어에도 사용할 수 있도록 지원할 계획이다. 단, 모질라에 따르면 이번 프로젝트는 아직 다른 언어까지 확장할 정도로 안정적인 단계는 아니다. 최종...

2018.04.10

IDG 설문조사

회사명:한국IDG 제호: ITWorld 주소 : 서울시 중구 세종대로 23, 4층 우)04512
등록번호 : 서울 아00743 등록일자 : 2009년 01월 19일

발행인 : 박형미 편집인 : 박재곤 청소년보호책임자 : 한정규
사업자 등록번호 : 214-87-22467 Tel : 02-558-6950

Copyright © 2022 International Data Group. All rights reserved.

10.5.0.9