Offcanvas
Some text as placeholder. In real life you can have the elements you have chosen. Like, text, images, lists, etc.
Offcanvas
1111Some text as placeholder. In real life you can have the elements you have chosen. Like, text, images, lists, etc.

웹어셈블리

크로스 개발 플랫폼 우노, ‘빠른 앱 만드는’ 웹어셈블리 지원 강화

우노 플랫폼이 웹어셈블리(WebAssembly) 지원을 강화한 우노 4.4 버전을 28일 공개했다.    우노는 데스크톱, 모바일, 웹 구분없이 애플리케이션을 만드는 오픈소스 기반 크로스 플랫폼 개발 도구로, 주로 C# 및 XAML 언어 개발자가 이용한다.  이번에 공개된 우노 4.4 버전은 웹어셈블리 중에서도 예외 처리와 쓰레드를 지원하는 것이 특징이다. 개발자는 이를 통해 애플리케이션의 성능을 개선하는 데 활용할 수 있다.  웹어셈블리 예외 처리 구조를 활용해 성능을 높이고 코드를 보다 간략히 작성할 수 있다. 또한 Uno.UI와 우노 부트스트랩퍼(Bootstraper)에서는 쓰레드 함수를 활성화하는 명령문을 입력 후, 쓰레드나 태스크를 생성하거나 CoreDispatcher나 Dispatcher을 메인 쓰레드의 리턴값으로 이용할 수 있다. 이런 기능으로 웹 앱 안의 복잡한 UI 쓰레드 실행을 피하거나, UI 관련 동작이 멈추는 현상을 없앨 수 있다.  우노로 만든 앱은 웹어셈블리를 이용해 웹에서 바로 실행하거나, 윈도우, iOS, 안드로이드, 맥OS, 리눅스 같은 특정 운영체제에서 실행되는 네이티브 앱 형태로 만들 수 있다.  우노 4.4 버전은 웹어셈블리 외에 ▲닷넷, 안드로이드, iOS, 스키아(Skia, 2D 그래픽 라이브러리)에서 플루이드 형식 애니메이션 지원 ▲기본 프로젝트 템플릿 개선 ▲각 플랫폼을 위한 성능 개선(예를 들어 안드로이드 드로어블(Drawable) 성능 개선) ▲게임패드 API를 위한 새 시나리오 추가 같은 개선 사항이 포함됐다.  editor@itworld.co.kr

우노 웹어셈블리 2022.07.04

가장 인기 있는 웹어셈블리 언어는 '러스트'

웹어셈블리 앱을 개발할 때 가장 자주 사용하는 프로그래밍 언어는 러스트(Rust)인 것으로 나타났다. 전반적인 웹어셈블리 사용도 점점 늘고 있는 것으로 조사됐다. 지난 6월 20일 소프트웨어 컨설팅 업체 스콧 로직(Scott Logic)이 공개한 '웹어셈블리 현황 2022(State of WebAssembly 2022)' 보고서의 내용이다. 이 조사는 애플리케이션 개발 299명을 대상으로 웹어셈블리 개발에 어떤 언어를 사용하는지 물었다. 그 결과 45%가 러스트를 자주 혹은 가끔 사용한다고 답해 1위를 기록했다. 러스트는 지난해 조사에 이어 올해도 1위였다. 보고서는 이런 인기의 이유로 대부분 웹어셈블리 런타임이 러스트로 작성되는 점을 꼽았다. 러스트에 이어 2위는 자바스크립트였다. 자바스크립트 엔진을 웹어셈블리로 컴파일할 수 있다는 점이 주요했던 것으로 보인다. 이번 조사에서 가장 순위가 크게 오른 언어는 블래이저(Blazor)와 파이썬(Python)이었고 반대로 어셈블리스크립트(AssemblyScript)는 순위가 가장 크게 하락했다. 또한 응답자의 67%가 웹어셈블리를 자주 사용한다고 답해 지난해 47%에서 크게 오른 것으로 나타났다. 이밖에 이번 조사의 주요 결과는 다음과 같다.   웹어셈블리를 사용하는 영역으로는 웹 개발이 70%로 1위를 기록했다. 이어 서버리스(35%), 컨테이너화(25%), 플러그인 환경(23%), IoT(10%) 순이었다. 가장 널리 사용하는 웹어셈블리 런타임은 와슴타임(Wasmtime), 와스머(Wasmer), 와슴3(Wasm3)이었다. 웹어셈블리가 더 발전하기 위해 가장 필요한 기능으로는 비 브라우저 API, 강화된 디버깅 지원, 제작 툴 개선 등이 꼽혔다. WASI(WebAssembly System Interface) 중에서 응답자가 가장 흥미롭다고 꼽은 것은 I/O, 소켓, 파일시스템, 네이티브 스레드, HTTP 순이었다. editor@itworld.co.kr

러스트 Rust WebAssembly 2022.06.24

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

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

개발자 소프트웨어 개발 프로그래밍 언어 2022.05.12

웹어셈블리 기반의 유력 언어 프로젝트 13종

지금의 웹 애플리케이션의 속도와 응답성을 네이티브 데스크톱 애플리케이션과 비교하긴 어렵지만 앞으로 대등할 만큼 발전한다면 어떨까? 바로 웹어셈블리의 지향점이다.   웹어셈블리는 컴팩트한 바이너리 형식을 사용하는 어셈블리와 유사한 저수준 언어로, 웹 브라우저에서 네이티브에 근접한 성능으로 실행된다. 또한 웹어셈블리는 C/C++, C#, 러스트, 고, 코틀린, 스위프트를 비롯한 여러 프로그래밍 언어를 위한 이식 가능한 컴파일 타겟을 제공한다.   웹어셈블리는 웹 애플리케이션 성능을 개선하고 브라우저 앱 개발에 자바스크립트 이외의 언어를 사용할 수 있게 해줄 기술로 기대를 모으고 있다. 구글, 모질라, 애플, 마이크로소프트 모두 각자의 브라우저 엔진에서 웹어셈블리를 지원한다.   웹어셈블리를 기반으로 완전히 새로운 프로그래밍 언어를 포함한 다양한 새로운 기술이 개발됐다. 웹어셈블리를 활용하는 13가지 언어 프로젝트를 정리해 소개한다.   바이너리엔(Binaryen)) 바이너리엔은 웹어셈블리를 위한 컴파일러 툴체인 인프라 라이브러리다. C++로 작성됐으며 쉽고 효과적이고 빠르게 웹어셈블리로 컴파일하는 것을 목표로 한다. 하나의 헤더에 C API가 있고 자바스크립트에서 사용 가능하다. 입력은 웹어셈블리와 유사한 형식으로 받지만 일반 컨트롤 그래프도 받을 수 있다.   바이너리엔의 내부 IR(중간 코드)은 간결한 데이터 구조를 사용하며 병렬 코드젠(codegen) 및 최적화를 위해 모든 CPU 코어를 활용한다. 또한 IR은 기본적으로 웹어셈블리의 부분집합이므로 웹어셈블리로 쉽게 컴파일된다. 웹어셈블리 최적화로 코드 크기와 속도가 모두 개선되므로 바이너리엔은 그 자체로 컴파일러 백엔드로 유용하다.   바이너리엔은 깃허브에서 다운로드할 수 있다.   블레이저 웹어셈블리(Blazor WebAssembly) 블레이저 웹어셈블리는 닷넷을 사용하여 인터랙티브한 클라이언트 측 단일 페이지 웹 앱을 제작하고 이...

웹어셈블리 네이티브애플리케이션 웹애플리케이션 2022.04.08

“SQL을 넘어” 데이터 쿼리를 위한 8가지 새로운 언어

지난 30년 동안 데이터베이스와 SQL(Structured Query Language, 구조적 쿼리 언어)는 거의 동의어로 사용됐다. 데이터베이스에서 정보를 추출하려면 누구나 SQL을 배워야 했고 데이터베이스에 관심이 있거나 데이터베이스 관리자를 직업으로 선택하는 누구나 SQL의 복잡한 구문을 마스터해야 했다.    SQL 자체는 예전 방식, 즉 메인프레임 사용자들이 했던 방식대로 생각하고 코딩하는 계기가 된다. 온 세계가 소문자를 받아들이는 동안에도 SQL 사용자들은 SELECT, WHERE와 같은 단어를 계속 사용했다. 틱톡에는 이를 두고 왜 항상 고함을 질러야 하는지 물으며 조롱하는 사람들도 있지만, SQL 사용자 대부분은 그런 조롱에 신경 쓰지 않는다. 넥타이와 반팔 셔츠를 입고 펀치카드를 다뤘던 사람들이 전체 대문자를 아무 문제없이 사용했다면, 곰인형 무늬 잠옷을 입고 일하는 지금의 재택 근무자도 아무 문제없이 사용할 수 있다.  그러나 데이터 불러오기 영역에서 SQL의 입지는 조금씩 좁아지고 있다. 새로운 데이터베이스가 등장하고 있으며, 그중 일부는 완전히 새로운 언어를 사용한다. 그렇다고 SQL의 인기가 떨어지는 것은 아니다. 오히려 지금 SQL은 과거 어느 때보다 많이 쓰이고 있다. 단지 데이터 스토리지 세계가 그보다 더 빠른 속도로 성장하면서 그 여파로 실험과 새로운 분기가 활발히 이뤄지고 있을 뿐이다.  여기서는 데이터를 불러오기 위한 8가지 새로운 접근 방법을 소개한다. 외형적인 부분에 국한되는 혁신도 있다. 어떤 개발자는 조금 더 깔끔하고 읽기 쉽도록 SQL 구문을 업데이트해서 브라우저를 위한 코드 쓰기와 데이터 불러오기 사이에서 작업을 전환할 때의 부조화를 완화했다. 이런 툴의 제작자는 기반 구조가 사실상 SQL과 동일하다는 점을 강조한다. 배우기도 여전히 쉬우므로 걱정하지 않아도 된다.  완전히 다른 사고 방식으로의 전환이 필요한 툴도 있다. 그래프 또는 시계열로 비트를 저장하는 데...

SQL 쿼리 그래프QL 2022.04.01

히포를 이용한 웹어셈블리 입문

웹어셈블리(WebAssembly, WASM)는 마이크로소프트의 클라우드 네이티브 컴퓨팅팀, 구체적으로는 (마이크로소프트가 인수한) 다이스 랩(Deis Labs)과 애저 모두에서 크게 주목하고 있는 매우 유망한 신기술이다. 새로운 웹어셈블리 툴이 속속 출시됨에 따라 이 툴을 사용할 수 있는 환경에 대한 요구도 커지고 있다.   다이스 랩의 새로운 히포 웹어셈블리(Hippo WebAssembly) 플랫폼 출시가 중요한 것도 바로 이 지점이다. 다이스의 많은 툴처럼 내부 팀의 필요에 의해 만들어졌기 때문에, 브라우저 호스트든 독립 실행형 웹어셈블리 시스템 인터페이스(WASI)든 관계없이 WASM 코드를 신속하게 설치, 관리, 실행할 수 있다. 깃 서버와 함께 빌트인 채널을 사용해 한 환경에서 서로 다른 릴리스를 만들고 배포할 수 있으며, 프로덕션, 스테이징 및 개발 빌드를 별도로 유지하면서 히포 서버를 하나만 운영하는 것도 가능하다. 히포를 이용하면 여러 애플리케이션을 호스팅할 수 있다. 단, 웹어셈블리는 기본적으로 샌드박스가 적용되므로 호스트 시스템 또는 외부 장치에 액세스할 수 있는 명시적 권한이 필요하다. 코드도 다른 플랫폼으로 이식할 수 있다. 일단 웹어셈블리용으로 컴파일하면 윈도우, 리눅스, 맥OS는 물론 인텔, RISC-V, ARM에 상관없이 모든 웹어셈블리 시스템에서 실행할 수 있다. 즉, 히포는 코드를 한번 작성해 테스트하면 어디서든 실행할 수 있는 방법을 제공한다.   개발 PC에서 히포 설정하기 히포와 같은 툴은 클라우드 네이티브로 운영하는 것이 이상적이지만, 현재 개발자 릴리스는 데스크톱 시스템에서만 사용할 수 있다. 여기서는 우분투를 호스팅하는 WSL2의 최신 빌드를 실행하는 윈도우 PC를 기준으로 진행한다. 다이스는 히포를 로컬에서 실행하는 방법에 대한 설명과 맥OS 및 리눅스 시스템에서의 사용법에 대한 자세한 정보를 제공한다. 반면 필자가 WSL2 우분투 20.04 LTS 시스템에서 히포를 실행할 때는 몇 가지 문제...

히포 웹어셈블리 Hippo 2021.10.18

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

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

웹어셈블리 컴파일러 어셈블리 2021.06.04

이스티오·엔보이, '웹어셈블리' 도입한다

마이크로서비스 네트워크를 관리하는 쿠버네티스 서비스 메시 '이스티오(Istio)' 1.5버전에 새로운 기술이 추가될 것으로 보인다. 다양한 플랫폼에서 준 네이티브 실행 속도를 제공하는 바이너리 코드 포맷 '웹어셈블리'다. 이는 웹어셈블리가 단순히 고성능 웹 앱을 만드는 방법뿐만 아니라 프로그래밍 언어의 하나로 점차 자리를 잡고 있다는 또 다른 증거다. 이스티오 프로젝트는 확장 기능과 엔보이(Envoy) 프로젝트 관련된 애드온을 처리하는 데 웹어셈블리(짧게 Wasm이라고도 쓴다)를 이용한다는 구상이다. 엔보이는 리프트(Lyft)의 엔지니어가 개발한 것으로, 네트워크 프록시 서비스를 제공한다. 덕분에 이스티오는 더 높은 수준의 추상화에 온전히 집중할 수 있었다. 두 프로젝트는 모두 확장할 수 있는데 단, 서로 다른 메커니즘을 사용했다. 이스티오는 믹서(Mixer)라고 불리는 모델을 쓰고, 엔보이는 자체 확장 시스템을 갖고 있다. 그러나 이스티오 프로젝트팀의 공식 블로그에 따르면, 이처럼 별개 메커니즘을 사용하는 방식은 여러 문제를 일으킨다. 이스티오는 제한적이고 비효율적으로 됐고 엔보이는 더 난해해졌다. 반면 웹어셈블리에서 확장기능을 만들면 두 가지 개발과 배포가 모두 더 간편해진다. 웹어셈블리의 실행 환경은 기본적으로 샌드박스 형태이므로 확장기능 코드의 버그로 인한 충돌도 줄일 수 있다. 이스티오팀이 언급한 또 다른 장점은 많은 프로그래밍 언어를 웹어셈블리로 컴파일할 수 있다는 것이다. 이러한 언어에는 자바스크립트나 타입스크립트 같은 웹 언어뿐만 아니라 C++나 러스트 같은 머신 네이티브 언어도 포함된다. 이렇게 되면 이스티오 개발자는 확장기능을 개발할 때 더 다양한 프로그래밍 언어를 사용할 수 있다. 엔보이와 이스티오에 웹어셈블리 지원을 추가하는 계획은 먼저 두 프로젝트 모두 내부적으로 이를 지원하는 것으로 시작한다. 이후 이스티오의 다양한 확장기능을 엔보이로 이전하게 된다. 그리고 이들 확장기능을 웹어셈블리로 컴파일하게 된다. 이런 컴파일 작업은 처음...

웹어셈블리 엔보이 이스티오 2020.03.18

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

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

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

브라우저에 파이썬 통합한 모질라 파이어다이드 프로젝트

모질라의 파이어다이드 프로젝트(Pyodide project)가 파이썬의 데이터 과학 스택을 웹 브라우저 웹어셈블리에컴파일해 추가하는 실험을 진행했다. 파이어다이드는 파이썬 넘피(Numpy) 과학 컴퓨팅 라이브러리, 팬다스(Pandas) 데이터 분석 라이브러리, 수학과 과학, 엔지니어링용 사이파이(SciPy) 라이브러리 일부를 웹어셈블리 형태로 구현했다. 파이썬의 Matplotlib 플로팅 라이브러리까지 포함돼있다. 브라우저 단위에서 데이터 과학 작업을 지원하는 아이오다이드(Iodide) 프로젝트와 밀접하게 연관된 파이어다이드는 독자적으로도 활용될 수 있고, 개발자가 브라우저에서 파이썬을 실행하는 환경이면 어디에서든 사용할 수 있다. 자바스크립트와 파이썬 간에서 객체를 변환해 파이썬이 웹 API에 완전한 접속 권한을 얻을 수 있다. 기본 데이터 유형 변환도 가능하지만, 자바스크립트 유형 배열은 파이썬 memoryviews으로 변환된다. 파이어다이드 프로젝트가 시작된 것은 브라우저 언어인 자바스크립트에 성숙한 데이터 과학 라이브러리가 갖춰져 있지 않아서다. 연산자 오버로딩 같은 수치 컴퓨팅 기능도 빠져 있다. 모질라가 바라는 것은 자바 스크립트의 데이터 과학 생태계의 발전이겠지만, 브라우저에 성숙한 파이썬 과학 스택을 통합하는 작업도 궁극적으로는 유용할 것이다. 파이어다이드는 Emscripten으로 표준 파이썬 인터프리터인 CPython과 넘피 등의 과학 컴퓨팅 패키지를 웹어셈블리 바이너리 형식으로 컴파일한다. 웹 브라우저에서 자바스크립트와 함께 실행된다. 파이어다이드를 브라우저에 로딩하려면 다음을 다운로드받아야 한다. -    웹어셈블리로 컴파일된 파이썬 인터프리터 -    가상 파일 시스템처럼 시스템 성능을 에뮬레이트하는 Emscripten에서 자바스크립트 -    파이썬 표준 라이브러리를 포함한 파이썬 인터프리터에 필요한 모든 파일 파일 크기가 클 수도 있지만, 이들 패키지는 한...

모질라 브라우저 파이썬 2019.04.17

ITWorld 용어풀이 | 웹어셈블리

스티브 잡스가 애플 모바일 기기에서 끝내 지원하지 않은 기술, 바로 플래시(Flash)입니다. 불과 몇 년 전만 해도 이 기술은 웹 페이지를 화려하게 표현하는 최고의 방법이었습니다. 단지 플러그인을 따로 설치해야 하고 그 자체에서 상당한 보안 취약점이 발견돼 여러 문제를 일으켰죠. 만약 플러그인 없이 웹 페이지 내에서 화려한 효과와 구현할 수 있다면 어떨까요? 그러면서 네이티브 앱에 버금가는 속도로 모바일 기기에서도 실행할 수 있다면요? 실제로 이를 목표로 개발 중인 기술이 있습니다. 웹어셈블리(WebAssembly)입니다. 웹 페이지 내에서 코드를 직접 실행하는 바이너리 포맷을 정의하는 웹 표준입니다. 쉽게 말하면 코드를 브라우저 내에서 빠르게 실행할 수 있도록 고안된 기술입니다. 데모부터 보고 갈까요? 다운로드 용량이 커서 조금 시간이 걸리지만 (대부분 애셋이고 실행 파일은 얼마 안 됩니다) 실행해 보면 웹 브라우저만으로 구현한 것으로 생각할 수 없을 만큼 정교한 그래픽과 움직임을 보여줍니다. 어떻게 가능했을까요? 일반적으로 웹 앱을 만들 때 자바스크립트 같은 프로그래밍 언어를 이용합니다. 그러나 PC는 0과 1만 이해할 수 있으므로, 브라우저가 코드 구문을 한 줄씩 불러들여 해석한 후 실행하게 됩니다. 그런데 혹시 PC에서는 제대로 보이던 웹 페이지가 스마트폰에서는 너무 느린 경험 없으셨나요? 코드를 해석하려면 상당한 컴퓨팅 파워가 필요한데, PC는 상대적으로 강력한 성능을 지원하므로 문제가 없지만 모바일 기기에서는 제대로 처리가 안 돼 발생하는 현상입니다. 반면 웹어셈블리는 그 자체가 이진 어셈블리 언어입니다. 0과 1로 된, PC가 읽을 수 있는 언어여서 브라우저가 곧바로 프로그램임을 인지하고 실행합니다. 해석하는 과정이 필요 없는 것이죠. 자바스크립트의 속도 문제 때문에 대안으로 나온 것이 모바일 앱이었는데, 웹어셈블리를 이용하면 멋진 기능과 성능의 앱을 브라우저에서 바로 실행할 수 있습니다. 어느 정도인가 하면 심지어...

용어풀이 웹어셈블리 2018.03.14

2017년 최고의 오픈소스 소프트웨어 : 소프트웨어 개발 툴

올해 오픈소스 소프트웨어 개발 툴 중에는 JVM을 수용한 개발자, IoT 개발자, 웹 개발자, 네이티브 개발자, 더 나아가 블록체인을 갈망하는 개발자들을 위한 도구들이 주목을 받았다. 2017년 개발자를 만족시킨 플랫폼, 프레임워크, 프로그래밍 언어, 기타 도구들을 소개한다. editor@itworld.co.kr

리액트 블록체인 이더리움 2017.10.10

“웹과 앱의 경계 없어진다” 웹어셈블리가 약속하는 차세대 앱 환경

모질라 파이어폭스 팀이 최근 파이어폭스 52를 출시했다. 이번 버전에는 일반적인 버그 수정과 최적화도 포함되어 있지만 가장 눈에 띄는 점은 웹어셈블리(WebAssembly) 지원 추가다. 웹어셈블리는 사람들이 이바이스와 웹을 사용하는 방법을 아예 바꿔놓을 잠재력을 가지고 있는 기술이다. 이렇게 말하니 뭔가 대단해 보이긴 하는데, 대체 뭘까? 현재 웹어셈블리에 관한 문서는 대부분 개발자를 대상으로 하기 때문에 최종 사용자는 읽어봐도 무슨 내용인지 이해하기 어렵다. 웹어셈블리는 도대체 무엇인가? 웹어셈블리는 브라우저 또는 브라우저 외부에서 실행 가능한 애플리케이션을 위한 사전 컴파일된 이진 어셈블리 형식이다. 플래시(진작에 사라졌어야 함)와 달리 웹어셈블리는 브라우저 내에 구축되므로 플러그인이 필요 없다. 현재 자바스크립트가 기본적으로 지원되는 경우와 비슷하다고 보면 된다. 컴파일이라는 말의 의미를 모르는 사람을 위해 설명을 하자면, 예를 들어 파이어폭스와 같은 일반적인 데스크톱 프로그램은 소스 코드를 컴파일해서 얻은 수많은 0과 1의 모음이다. 소스 코드는 C 또는 C++와 같은 언어로 작성된다. 그러나 PC는 (일반적으로) C/C++ 코드를 직접 실행하지 않으므로 위에서 말한 0과 1로 이루어진 언어로 컴파일해야 한다. 웹어셈블리는 모든 컴퓨터에 통용되는 이진 어셈블리 언어(0과 1로 된 언어가 되기 전의 중간 형태 언어)다. 웹어셈블리 코드가 다운로드되면 PC는 이것이 프로그램임을 바로 인지한다. 이후 PC는 아키텍처와 운영 체제에 맞추어 최적화해서 코드를 어셈블링(어셈블러는 일종의 컴파일러)한다. 자바스크립트가 아니다 현재 대부분의 웹 애플리케이션은 자바스크립트를 사용해서 브라우저 내에서 실행된다. 자바스크립트는 오랜 시간 동안 사용됐고 그 사이 브라우저 최적화와 하드웨어 개선 덕분에 속도도 상당히 빨라졌다. 그러나 자바스크립트는 어디까지나 인터프리트(Interprete) 언어다. 즉, 컴퓨터(또는 스마트폰)가 코드 구...

파이어폭스 코드 웹어셈블리 2017.03.21

파이어폭스 새 버전, 웹어셈블리 기술 지원 “플러그인 없이 네이티브 앱처럼”

모질라가 파이어폭스를 버전 52로 업데이트했다. 눈에 띄는 변화는 두 가지로, 보안 기능을 강화하고, 아직은 평가가 진행 중인 기술 표준인 웹어셈블리(WebAssembly) 지원을 추가했다. 웹어셈블리는 웹 애플리케이션을 거의 네이티브 코드와 같은 속도로 실행할 수 있다고 주장한다. 파이어폭스 52는 또한 28개의 보안 취약점을 수정했는데, 이중 절반은 ‘치명적인’ 것이다. 또 NPAPI (Netscape Plug-in Application Programming Interface) 플러그인을 차단했는데, 이로써 애플 사파리를 제외한 대부분 브라우저가 NPAPI 지원을 중단했다. 특히 암호화되지 않은 웹사이트에 패스워드를 입력하면 어도비 플래시 플레이어는 물론 모든 플러그인에서 경고 창을 띄운다. 하지만 모질라는 웹어셈블리 지원을 더 크게 내세우고 있다. 자사 블로그와 Medium.com에 올린 두 건의 포스트를 통해 모질라 임원들은 파이어폭스가 웹어셈블리를 지원하는 최초의 웹 브라우저라는 사실을 강조했다. 사실 웹어셈블리가 모질라의 연구 프로젝트에 근간을 두고 만들어진 표준이라는 점에서 당연한 일로 볼 수도 있다. 모질라의 플랫폼 엔지니어링 팀 책임자 데이빗 브라이언트는 “웹어셈블리는 지난 10년 동안 웹 플랫폼의 가장 큰 발전 중 하나”라고 강조했다. 브라이언트에 따르면, 웹어셈블리는 개발자가 게임이나 3D 렌더링, 비디오 편집 같은 CPU 집약적인 앱을 개발한 다음, 이를 플러그인 없이 거의 네이티브 앱과 같은 속도로 실행할 수 있다. 또 웹어셈블리가 기존 웹 애플리케이션을 일신하는 것은 물론, 성능 문제로 구현하기 어려웠던 새로운 범주의 앱을 이끌 수 있는 “게임 체인저”라고 설명했다. 애플과 구글, 마이크로소프트 모두 웹어셈블리 지원을 약속한 상태이다. 구글은 오는 3워 14일 출시 예정인 크롬 57에서 웹어셈블리를 지원할 것이라고 밝혔다.  editor...

모질라 파이어폭스 NPAPI 2017.03.08

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

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

Copyright © 2022 International Data Group. All rights reserved.