모두 안녕, 나는 드롭 박스에서 현재 개발중인 Pyston, 파이썬의 새로운 오픈 소스 구현을 발표하게 된 것을 매우 기쁘게 생각 해요. 이 프로젝트의 목표는 C + +와 같은 기존의 시스템 언어에 의해 지배 영역으로 파이썬을 밀어 수있는 고성능 파이썬 구현을 생산하는 것입니다.
여기에 드롭 박스에서, 우리는 파이썬을 사랑하고 우리가 할 수있다만큼에 사용하려고합니다. 우리가 확장하고 문제는 우리가 성장 태클하지만, 우리는 파이썬에 머물 때 우리의 성과 목표를 타격하는 것은 때로는 엄청나게 어려워 질 수 있다는 것을 발견하기 시작하고 있습니다. 때때로, 다른 언어로 재 작성을 할 적은 작업이 될 수 있습니다. 나는 개인적으로 파이썬을 사랑하고, 나에게 우리가 뭔가를 다시 작성하기로 결정 때마다 고통을, 그래서 나는 그것에 대해 뭔가를하고 싶었다. 정적 컴파일을 일부 포기 실험 후, 우리는 주위를 둘러 보았다 및 JIT 기술은 자바 스크립트 공간에 적용되는 방법을 성공적으로 보았다 : 크롬의 V8 엔진은 특히 크게 자바 스크립트 성능의 현 상태를 밀고있다. 우리의 희망은 유사한 기술을 사용하여, 우리는 파이썬 비슷한 성능 향상을 달성 할 수 있다는 것입니다.
Pyston은 초기 단계에 아직도 사용 준비가되지 않았습니다, 그러나 우리는 초기의 라이프 사이클에 발표에 의해 희망이있어 코드를 오픈 소싱 , 우리는 개발 과정에서 파이썬과 JIT 커뮤니티와 공동 작업을 수행 할 수 있습니다. 이 블로그 게시물에 너무 많은 세부 사항에 대해서만 방, 그러나 우리는 우리가 우리가 새로운 파이썬 구현이 필요하다고 생각하는 이유에 대해 이야기하고, Pyston 작동 방식은 약간의 가고 싶었다.
왜 새로운 구현
. JIT 기술, 종종 정교한 방법으로 사용하여 파이썬 구현의 수를 이미 있습니다 PyPy는 그것의 추적 JIT와 인상적인 성능을 달성했다가; 자이 썬과는 IronPython은 모두 광범위한 JIT를 지원하는 성숙 된 VM의 상단에 내장되어 있습니다. 그럼 왜 우리는 새로운 구현을 시작하는 가치가 있다고 생각합니까?
우리가 가장 유망한 기술은 기존의 구현과 호환되지 않는 생각하기 때문에 한마디로 말하면, 그것은이다. 예를 들어, 자바 스크립트 세계 인해 뛰어난 성능의 혜택을, 방법 -에서 - 시간 JITs에 JITs 추적에서 전환했습니다. 동일한 성능의 장점은 파이썬에 대해 보유하고 있는지 여부는 의문이지만, 두 가지 접근 방법이 근본적으로 양립 할 수 있기 때문에, 질문에 대답을 시작하는 유일한 방법은 새로운 방법 -에서 - 시간 JIT를 구축하는 것입니다.
차별화의 또 다른 포인트는의 사용 계획입니다 효율적으로 확장 모듈을 지원하는 보수적 인 가비지 컬렉터 . 다시 말하지만, 우리는 나중에 더 나은 방법인지하지만, 그것이 기존의 구현을 테스트하는 어려운 JIT 충분히 통합의 결정 여부까지 알 수 없습니다.
처음부터의 단점은 새로운 언어 구현을 작성하는 것은 엄청난 작업입니다, 놀라지입니다. 다행히, 도구는이 과정에 도움을 줄 수 나오기 시작하고 있습니다; 특히, Pyston은 상단에 구축 한 LLVM 우리가 세부 자신을 처리 할 필요없이 상위 계층 코드 생성의 품질을 달성 할 수 있습니다. 그럼에도 불구하고, 새로운 파이썬 구현은 거대한 기업이고, Pyston 곧 사용할 준비가되지 않습니다.
그것은 작동하는 방법
높은 수준에서, Pyston 구문 분석 파이썬 코드를 사용하며 LLVM 중간 표현 (IR)로 변환합니다. IR는 LLVM 최적화를 통해 실행 및 실행 기계 코드의 결과로, LLVM의 JIT 엔진에 떨어져 전달됩니다. LLVM은 쉽게 매우 빠른 코드로 이어질 수있는, 더 추가하기위한 최적화 패스 및 메커니즘의 다수가 포함되어 있습니다.
문제는, 그러나, 모든 낮은 수준의 행동이 어떤 동적 언어로 할 필요가 파견 형식 뒤에 숨어 있기 때문에 LLVM은 파이썬 코드를 추론 할 수 없다는 것입니다. 이 문제를 처리하기 위해 Pyston 투기를 입력 고용 : 그것을 위해 일반적으로 불가능하다 증명 변수가 특정 유형이있을 것이라는 점을, 그러나 Pyston 종종 개체의 형식이 될 수있는 몇 가지 확실하게 예측할 수있다. 예측이 이루어지면, Pyston는 예측이 보유하고 빠른 경로와 그렇지 않은 느린 경로 사이에 분기, 런타임에 예측을 확인합니다.
Pyston 또한 빠른 메서드 호출에 대한 빠른 속성 조회 및 인라인 캐시에 대한 숨겨진 클래스와 같은 다른 현대적인 기술을 포함한다. 당신은 더 많은 기술적 인 세부 사항 찾을 수 Github에서 페이지 와 함께, 별도의 블로그 게시물 기술적 인 세부 사항으로 간다.
현재 상태
Pyston은 아직 초기 단계에 있으며 지금 만 파이썬 언어의 최소 부분 집합을 지원합니다. 그것은 벤치 마크 숫자를 언급하는 것은 매우 불공평 1 일 이후) Pyston 대표로 벤치 마크 충분히 큰 세트를 지원하지 않고, 2) Pyston는 속도 저하를 소개 할 수 사람을 포함한 모든 런타임 기능 ()를 지원하지 않기 때문에, 그것은 아니다 진정한 사과 - 투 - 사과 비교. 그주의 사항으로, Pyston은 일반적으로 CPython과의 성능을 이길 수 있지만 여전히 PyPy 뒤떨어.
이 코드는 Github에서 발매 된 기술 문서의 수가 증가와 함께, 아파치 2.0 라이선스로. 이 할 일이 많이, 그리고 우리 팀의 성장을 찾는 : 이런 종류의 일이 당신을 관심하는 경우, 신청 해주세요 !
프로젝트가 진행됨에 따라 더 많은 업데이 트를 계속 지켜봐 주시기 바랍니다. 당신은 우리의 발표 메일 링리스트에 가입하고 싶은 경우에, 당신은 할 수 있습니다 여기에 이렇게 .
'security_downloads' 카테고리의 다른 글
자바스크립트 공부 (0) | 2014.04.07 |
---|---|
"Node.js와 C# dll 연동(Integrating Node.js with a C# dll) (0) | 2014.04.07 |
암호화의 개요 (0) | 2014.04.07 |
구글 자바 코딩규약 발표소식 (0) | 2014.04.06 |
DLL 사이드 로딩 (side-loading) : 안티 바이러스에 대한 또 다른 사각 지대 (0) | 2014.04.06 |