PyScript, WebAssembly
웹 브라우저에서 동작하는 언어로서 자바스크립트는 오랜 기간 군림해 왔다.
그렇게 세월이 흘러 웹에서 사용할 수 있는 저수준 언어인 웹어셈블리가 나왔고,
C, C++, Rust 등의 언어를 컴파일 하여 웹 브라우저가 이해할 수 있는 저수준 언어인 웹어셈블리 코드를 만들 수 있게 되었다.
현재 웹어셈블리는 웹 표준으로서 자리 잡았고 진화하고 있다.
웹어셈블리 코드를 만들기 위한 파이썬 컴파일 프로젝트인 PyScript 가 아나콘다에 의해 개발되기 시작했고
조만간 상용 프로덕트에서 사용할 정도까지 개발될 것 같다.
그리고 다른 언어들 고, 코틀린, 자바 등도 웹어셈블리 코드를 만드는 컴파일러가 개발되지 않을까.
드디어 자바스크립트 독재자의 시대는 끝이 나는 것일까.
Getting Started
파이스크립트의 공식 홈
파이스크립트의 깃헙 리포지토리
https://github.com/pyscript/pyscript
깃헙에 올라와 있는 Getting Started 를 살짝 실행해 보았다.
※ 모든 코드는 파이스크립트 깃헙 리포지토리의 Getting Started 에서 가져왔습니다.
VScode 에 Live Server Extension 을 설치하고 헬로월드를 찍어보자.
<html>
<head>
<link rel="stylesheet" href="https://pyscript.net/alpha/pyscript.css" />
<script defer src="https://pyscript.net/alpha/pyscript.js"></script>
</head>
<body> <py-script> print('Hello, World!') </py-script> </body>
</html>
위 코드를 작성한 html 파일을 만들고 VScode 오른쪽 하단에서 Go Live 를 클릭해서 Live Server 를 기동시키면
헬로월드가 웹브라우저에 찍힌다. 파이썬 코드를 웹브라우저서 사용할 수 있다니!
다음으로 파이썬 내장 라이브러리를 import 해서 사용해 보자.
<html>
<head>
<link rel="stylesheet" href="https://pyscript.net/alpha/pyscript.css" />
<script defer src="https://pyscript.net/alpha/pyscript.js"></script>
<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.1.3/dist/css/bootstrap.min.css" rel="stylesheet" crossorigin="anonymous">
</head>
<body>
<b><p>Today is <u><label id='today'></label></u></p></b>
<br>
<div id="pi" class="alert alert-primary"></div>
<py-script>
import datetime as dt
pyscript.write('today', dt.date.today().strftime('%A %B %d, %Y'))
def compute_pi(n):
pi = 2
for i in range(1,n):
pi *= 4 * i ** 2 / (4 * i ** 2 - 1)
return pi
pi = compute_pi(100000)
pyscript.write('pi', f'π is approximately {pi:.3f}')
</py-script>
</body>
</html>
파이썬 내장 datetime 라이브러리를 사용한 오늘의 날짜, 잘 나온다!
py-env 태그를 사용해서 외부 라이브러리도 불러오거나 직접 작성한 파이썬 파일을 로딩할 수도 있고
<py-env>
- numpy
- matplotlib
- paths:
- /data.py
</py-env>
py-config 태그를 사용해서 메타정보 등을 설정할 수도 있다. yaml 포맷을 쓰는 것이 흥미롭다.
<py-config>
- autoclose_loader: false
- runtimes:
-
src: "https://cdn.jsdelivr.net/pyodide/v0.20.0/full/pyodide.js"
name: pyodide-0.20
lang: python
</py-config>
그 외에도 py-input, py-box, py-button, py-title 같은 태그도 준비되어 있다.
PyScript 의 미래
얼마 전 파이썬 3.11 베타 버전이 릴리즈 되었는데 기존 속도 60% 빨라졌다고 한다.
준비된 라이브러리와 거대한 생태계를 가지는 파이썬이 속도까지 잡는다면 정말 무서워질 것 같다.
알고리즘 풀 때만 파이썬을 사용하는데 이제는 좀 더 본격적으로 파이썬을 공부해야 하지 않을까 하는 생각도 든다.
버그를 유발하는 알 수 없는 동작을 하는 자바스크립트는 언어적으로 약점이 있기 때문에
PyScript 나 웹어셈블리 코드로 컴파일하는 다른 언어들이 등장하면 서서히 쇠퇴하지 않을까.
영원할 줄 알았던 제이쿼리가 사라지고 있듯이..
데이터 분야에 강점을 가지는 파이썬을 웹브라우저 언어로서 사용할 수 있다면
데이터를 시각화하는 곳에서는 자바스크립트보다는 파이스크립트가 강세를 보일 것 같다.
파이썬을 사용할 수 있는데 굳이 자바스크립트의 차트 라이브러리 등을 사용할 이유는 없기 때문이다.
댓글