어셈블리 스크립트
AssemblyScript| 패러다임 | 멀티패러다임: 기능성, 범용성, 필수성, 객체 지향성 |
|---|---|
| 가족 | JavaScript, TypeScript |
| 설계자 | 대니얼 위츠,[1] 맥스 그레이[2] |
| 개발자 | AssemblyScript[1] 프로젝트 |
| 처음 등장한 | 전([3] |
| 안정된 릴리스 | .20.14 / 2022년 7월 21일, 전([4] |
| 타이핑 분야 | 스태틱 |
| 범위 | 어휘 |
| 면허증. | Apache 라이센스 2.0[5] |
| 파일 이름 확장자 | .ts |
| 파일 형식 | 텍스트, 유니코드(소스) .wasm 바이너리 형식(개체) |
| 웹 사이트 | www |
| 주요 구현 | |
| asc(AssemblyScript 컴파일러) | |
| 영향을 받다 | |
| JavaScript, TypeScript, Web Assembly | |
AssemblyScript는 WebAssembly용으로 최적화되어 정적으로 컴파일되는 TypeScript 기반의 프로그래밍 언어입니다(현재 AssemblyScript 컴파일러를 사용하고 있습니다).ECMAScript와 JavaScript와 비슷하지만 정적 유형을 사용하는 이 언어는 AssemblyScript 커뮤니티의 기여로 AssemblyScript[6] 프로젝트에 의해 개발됩니다.
개요
2017년에는 주요 웹 브라우저 간에 저수준 바이트코드 및 관련 가상 머신의 표준 정의인 Web Assembly의 지원이 널리 보급되어 웹 개발자는 클라이언트 측 프로그램 및 애플리케이션을 웹 브라우저 내에서 실행할 수 있는 저수준 및 잠재적으로 고성능 컴파일 타깃을 제공하게 되었습니다.해석된(및 실제로 동적으로 컴파일된) JavaScript Web 스크립팅 [7]언어에 추가합니다.Web Assembly를 사용하면 해석 오버헤드나 동적 [8]컴파일의 초기 지연 없이 웹 브라우저 내에서 잠재적으로 네이티브 수준 또는 "베어메탈" 성능으로 실행할 수 있도록 프로그램 및 코드를 미리 정적으로 컴파일할 수 있습니다.
Web Assembly가 주요 웹 브라우저에 채택됨에 따라, LLVM/Clang 기반의 C 및 C++ 컴파일러인 Emscripten의 제작자인 Alon Zakai는 asm.js라고 불리는 JavaScript의 서브셋을 대상으로 하여 Web Assembly를 Emscripten의 컴파일 대상으로 하여 C 및 C/또는 C+++ 프로그램을 직접 코드화할 수 있도록 지원했습니다.
Emscripten 및 이와 유사한 컴파일러를 통해 웹 개발자는 C, C++, Go, Rust 등의 고급 언어로 작성된 새로운 코드 또는 기존 코드를 Web Assembly에 포트하여 웹 브라우저에서 네이티브 수준의 실행 성능을 잠재적으로 높일 수 있습니다.이것에 의해, Web 개발자는 클라이언트측의 Web 스크립트나 애플리케이션의 개발에 익숙해져 있습니다.ECMAScript/JavaScript(웹 브라우저의 사실상의 클라이언트 측 프로그래밍 언어)에서 WebAssembly를 대상으로 하는 데 JavaScript와 다른 언어를 사용합니다.AssemblyScript는 JavaScript와 구문적으로 유사한 TypeScript의 변형으로서 JavaScript에 익숙한 개발자가 WebAssembly를 대상으로 하는 익숙한 언어를 사용할 수 있도록 함으로써 WebAssembly로 컴파일할 수 있는 개별 언어의 학습 곡선을 줄일 수 있습니다.왜냐하면 AssemblyScript WebAssembly을 위해서 좋은 최적의 원시 언어 설계되었다 게다가, 그 언어의 형식 시스템 면밀히 관찰하고 있으며 언어(일반적으로 매크로로 구현되)직접 지시 현대 pr에서 사용 가능하게 반영하는 WebAssembly 지침에 표준 낮은 수준의 기능 그 지도를 제공한다 WebAssembly,[10] 따라가곤 한다.ocSIMD 및 벡터 명령과 같은 에세서와 다음과 같은 보다 전문화된 명령어clz(선행 0비트 카운트),ctz(후행 0비트 카운트), 및popcnt(인구 수), 암호화 [11]및 암호화 라이브러리와 같은 응용 프로그램에서 사용됩니다.
AssemblyScript 컴파일러인 asc는 Alon Zakai에 의해 개발된 백엔드 컴파일러 툴체인인 Binaryen을 기반으로 하며 Web Assembly로 컴파일되며 Emscripten의 컴포넌트이다(Zakai도 개발).asc 컴파일러 및 기타 툴은 npm 패키지 매니저를 통해 이용할 수 있습니다.
반면 WebAssembly는 원래 웹 브라우저, WASI(WebAssembly 시스템 인터페이스), 시스템 전화 와 functions,[12]WebAssembly 런타임 환경의 projec의 개발로 이어졌다 다른 운영 체제에서 WebAssembly 프로그램 접근할 수 있는 표준 API에 대한 공동체 규격의 개발 안에 실행을 위해 설계되었다.이익 sWasmtime[13] 및[14] Wasmmer를 사용하여 Web Assembly 및 이를 컴파일할 수 있는 AssemblyScript 등의 언어로 작성된 코드를 웹 이외의 환경에서도 실행할 수 있습니다.
JavaScript와의 호환성
AssemblyScript는 WebAssembly 모듈로 컴파일되어 다음과 같은 표준 JavaScript 메서드를 사용하여 클라이언트 측 웹 페이지로 인스턴스화할 수 있습니다.WebAssembly.compileStreaming그리고.WebAssembly.instantiateStreaming표준 WebAssembly [15]바이너리와 동일합니다.JavaScript와 컴파일된 WebAssembly 모듈 간에 전달되는 데이터 및 JavaScript와 WebAssembly 간의 함수 호출은 모든 WebAssembly [16]모듈과 동일합니다.
AssemblyScript 언어는 대부분 TypeScript의 서브셋이기 때문에 이론적으로는 이 서브셋을 사용하여 AssemblyScript 프로그램을 작성하고 TypeScript 컴파일러와 AssemblyScript 컴파일러를 사용하여 플레인 JavaScript와 WebAssembly로 컴파일할 수 있습니다.이를 통해 잠재적으로 JavaScript 또는 WebAssembly 런타임 환경에 배포할 수 있는 휴대용 코드가 허용됩니다.
사용.
2022년 [update]7월 현재 GitHub에서 호스팅되는 12,000개 이상의 프로젝트가 AssemblyScript에 [17]전체적으로 또는 부분적으로 작성되어 있으며,[18][19] npm을 통해 매주 약 18,000개의 AssemblyScript 컴파일러를 다운로드하고 있습니다.
2021년 Webpack은 xxhash 및 md4 소스 등의 해시함수의 계산 속도를 높이기 위해 AssemblyScript를 사용하기 시작했습니다.이것은 또한 토착 의존성을 없애는 것을 가능하게 했다.
접수처
Emscripten의 리더 개발자인 Alon Zakai는 Assembly Script를 "Web Assembly와 코드 크기를 염두에 두고 설계되었다"고 특징지었다.새로운 목적으로 사용하는 기존 언어는 아니지만 Web Assembly용으로 설계된 언어입니다.그것은 훌륭하다wasm-opt통합(사실 통합과 함께 구축됨)을 통해 적절한 코드 [20]크기를 쉽게 얻을 수 있습니다."
노르웨이의 음악가 Peter Salomonsen은 "WebAssembly Music"이라는 제목의 2020 WebAssembly Summit 토크에서 라이브 전자 음악 합성에서 AssemblyScript를 사용하는 것을 시연했습니다. "AssemblyScript는 높은 수준의 가독성과 낮은 수준의 제어를 가지고 있기 때문에 선택했지만, 당신은 높은 수준의 언어입니다.낮은 수준의 느낌을 받을 수 있고,[21] 원한다면 직접 WebAssembly 내장 함수를 작성할 수도 있습니다."
Compute@Edge 서버리스 컴퓨팅 환경에서 Web Assembly를 사용하는 클라우드 컴퓨팅 서비스 프로바이더 Fastly의 시니어 엔지니어 Aaron Turner는 Assembly Script 리뷰에서 다음과 같이 말했습니다.[22]
AssemblyScript는 TypeScript보다 더 엄격한 입력이 필요하지만 TypeScript 구문과 의미론에 최대한 근접하여 대부분의 JavaScript 개발자가 AssemblyScript를 사용하기 쉽게 되어 있어 최신 JavaScript 생태계를 크게 지원할 수 있습니다.예를 들어 AssemblyScript 컴파일러는 as-pect와 같은 일반적인 AssemblyScript 도구와 라이브러리뿐만 아니라 npm에도 사용할 수 있습니다.AssemblyScript 파일도 TypeScript의 .ts 파일 확장자를 사용하며 TypeScript 링터 등의 TypeScript 툴에서 AssemblyScript를 피기백하기 위한 적절한 입력이 포함되어 있습니다.적절한 미세 조정으로 AssemblyScript는 TypeScript 컴파일러에서도 사용할 수 있습니다.
AssemblyScript는 JavaScript 개발자가 WebAssembly를 출력하는 언어를 선택할 수 있는 오버헤드가 낮은 엔트리 포인트를 제공하기 때문에 매우 흥미롭습니다.AssemblyScript의 읽기 및 쓰기 학습과 JavaScript 개발자의 워크플로우에 이미 있을 수 있는 기존 툴의 많은 사용도 가능합니다.AssemblyScript는 WebAssembly 커뮤니티에서 WebAssembly를 선택하기 위한 훌륭한 게이트웨이로 자주 언급됩니다.이미 웹용 애플리케이션을 작성하고 있는 다수의 개발자 그룹이 Web Assembly를 습득하고 학습할 수 있는 경로를 제공합니다.처음부터 시작해서 JavaScript나 TypeScript에 익숙하지 않은 경우에도 Web Assembly 출력을 시작하기 위한 언어를 선택할 때 AssemblyScript는 확실한 선택입니다.
그러나 터너는 언어의 잠재적 단점이지만 일시적인 단점으로서 언어의 상대적 새로움과 더 크고, 더 복잡하고, 확립된 프로그래밍 언어에서 사용할 수 있는 일부 기능의 부족을 계속해서 언급했다.
「 」를 참조해 주세요.
레퍼런스
- ^ a b The AssemblyScript Project (April 24, 2020). "AssemblyScript Working Group". GitHub.com. AssemblyScript Project. Retrieved February 10, 2021.
Daniel Wirtz (@dcodeIO) - Author of AssemblyScript
- ^ Aaron Turner (March 28, 2019). "WebAssembly for Javascript Developers". YouTube.com. WebAssembly SF. Retrieved February 10, 2021.
@dcodeIO [Daniel Wirtz] and @MaxGraey [Max Graey]—they’re the main two developers of AssemblyScript
- ^ The AssemblyScript Project (2017). "assemblyscript 0.1.0". npmjs.com. AssemblyScript Project. Retrieved February 10, 2021.
- ^ The AssemblyScript Project (July 21, 2022). "assemblyscript". npmjs.com. The AssemblyScript Project. Retrieved July 21, 2022.
- ^ The AssemblyScript Project (September 29, 2017). "LICENSE". GitHub.com. The AssemblyScript Project. Retrieved February 10, 2021.
AssemblyScript/assemblyscript is licensed under the Apache License 2.0
- ^ The AssemblyScript Project. "The AssemblyScript Project". GitHub.com. The AssemblyScript Project. Retrieved February 10, 2021.
- ^ WebAssembly Community Group (November 2017). "Roadmap". WebAssembly.org. WebAssembly Community Group. Retrieved February 10, 2021.
- ^ WebAssembly Working Group. "WebAssembly". WebAssembly.org. WebAssembly Working Group. Retrieved February 10, 2021.
- ^ Alon Zakai and Emscripten Contributors. "Emscripten". Emscripten.org. Emscripten project. Retrieved February 10, 2021.
{{cite web}}:author=범용명(도움말)이 있습니다. - ^ The AssemblyScript Project. "Types". AssemblyScript.org. The AssemblyScript Project. Retrieved February 10, 2021.
- ^ The AssemblyScript Project. "Environment". AssemblyScript.org. The AssemblyScript Project. Retrieved February 10, 2012.
- ^ The Wasmtime Project. "WASI: The WebAssembly System Interface". WASI.dev. The Wasmtime Project. Retrieved February 10, 2021.
- ^ The Wasmtime Project. "Wasmtime: A small and efficient runtime for WebAssembly & WASI". Wasmtime.dev. The Wasmtime Project. Retrieved February 10, 2021.
- ^ Wasmer, Inc. "Wasmer: The Universal WebAssembly Runtime". Wasmer.io. Wasmer, Inc. Retrieved February 10, 2021.
- ^ Mozilla Developer Network. "Loading and running WebAssembly code". developer.mozilla.org. Mozilla Developer Network. Retrieved February 10, 2021.
- ^ Mozilla Developer Network. "Using the WebAssembly JavaScript API". developer.mozilla.org. Mozilla Developer Network. Retrieved February 10, 2021.
- ^ GitHub. "AssemblyScript/assemblyscript Dependency graph". GitHub.com. GitHub. Retrieved June 24, 2022.
- ^ npmjs. "assemblyscript Weekly Downloads". npmjs.com. npmjs.com. Retrieved June 24, 2022.
- ^ "Resolve Error In Typescript". 2022년 5월 7일 토요일
- ^ Alon Zakai (February 19, 2020). "Shipping Tiny WebAssembly Builds". YouTube.com. WebAssembly-Summit.org. Retrieved February 10, 2021.
- ^ Peter Salomonsen (February 19, 2020). "WebAssembly Music". YouTube.com. WebAssembly-Summit.org. Retrieved February 10, 2021.
- ^ Aaron Turner (October 29, 2020). "Meet AssemblyScript: your next computing language". Fastly.com. Fastly. Retrieved February 10, 2021.
외부 링크
- AssemblyScript.org (공식 사이트)
- AssemblyScript 매뉴얼(프로젝트 페이지)
- AssemblyScript 프로젝트(GitHub 상)
- assemblyscript (npm)