GithubHelp home page GithubHelp logo

waterimp / shedskin Goto Github PK

View Code? Open in Web Editor NEW

This project forked from shedskin/shedskin

0.0 0.0 0.0 36.12 MB

Shed Skin is a restricted-Python-to-C++ compiler. Read the introduction below to learn about the restrictions.

Home Page: https://shedskin.github.io/

License: Other

C++ 48.06% Python 49.78% CMake 2.14% Dockerfile 0.02%

shedskin's Introduction

http://img.shields.io/badge/benchmarked%20by-asv-green.svg?style=flat

Shed Skin

Shed Skin is a transpiler, that can translate pure, but implicitly statically typed Python 3 programs into optimized C++. It can generate stand-alone programs or extension modules that can be imported and used in larger Python programs.

Besides the typing restriction, programs cannot freely use the Python standard library (although about 25 common modules, such as random and re, are currently supported). Also, not all Python features, such as nested functions and variable numbers of arguments, are supported (see the documentation for details).

For a set of 80 non-trivial programs (at over 25,000 lines in total (sloccount)), measurements show a typical speedup of 1-100 times over CPython.

Usage

Compile and run the 'hello, world!' (test.py) example under Linux/OSX:

shedskin build test
build/test

Under Windows:

shedskin build --conan test
build/Debug/test.exe

Restrictions

Shed Skin only supports a restricted subset of Python, so one should not expect a given program to compile without any changes, if possible at all. See the documentation for an overview of the limitations.

Installation

Shed Skin depends on some others projects, such as the Boehm garbage collector. Please see the documentation on how to install these.

Comparison

Some timings for the Shed Skin 'sieve' example (n=100000000) and several Python implementations/optimizers:

cpython 3.10.6:     13.4 seconds
cpython 3.11.0:     11.4
nuitka 0.6.16:      11.4
pypy 3.9.12:        5.8
numba 0.56.4:       2.5
shedskin (master):  1.9

Note that Numba defaults to int64 as integer type, while Shed Skin defaults to int32. Performance is practically equal when using shedskin --long.

Screenhots

Some screenshots of the example programs in action:

(pylot)

https://raw.githubusercontent.com/shedskin/shedskin/master/docs/assets/screenshots/harm3.png

(mandelbrot2)

https://raw.githubusercontent.com/shedskin/shedskin/master/docs/assets/screenshots/harm4.png

(c64)

https://raw.githubusercontent.com/shedskin/shedskin/master/docs/assets/screenshots/harm1.png

(othello2)

https://raw.githubusercontent.com/shedskin/shedskin/master/docs/assets/screenshots/harm6.png

(doom)

Left floating image

This video shows the dramatic difference in performance for the DOOM example before and after compilation

Contributors

The following people have contributed to Shed Skin development:

Shakeeb Alireza
Hakan Ardo
Brian Blais
Paul Boddie
François Boutines
Djamel Cherif
James Coughlan
Mark Dewing
Mark Dufour
Artem Egorkine
Michael Elkins
Moataz Elmasry
Enzo Erbano
Ernesto Ferro
Salvatore Ferro
FFAO
Victor Garcia
Luis M. Gonzales
Fahrzin Hemmati
Folkert van Heusden
Karel Heyse
Humhue
Johan Kristensen
Kousuke
Denis de Leeuw Duarte
Van Lindberg
David Marek
Douglas McNeil
Andy Miller
Jeff Miller
Danny Milosavljevic
Joaquin Abian Monux
John Nagle
Harri Pasanen
Brent Pedersen
Joris van Rantwijk
Retsyo
Pierre-Marie de Rodat
Jérémie Roquet
Mike Schrick
SirNotAppearingInThisTutorial
Paul Sokolevsky
Thomas Spura
Joerg Stippa
Dan Stromberg
Dave Tweed
Jaroslaw Tworek
Tony Veijalainen
Pavel Vinogradov
Jason Ye
Liu Zhenhai
Joris van Zwieten

shedskin's People

Contributors

srepmub avatar shakfu avatar folkertvanheusden avatar fahhem avatar ernestoferro avatar tomspur avatar arkanosis avatar fouc avatar shakeeb avatar humhue avatar brentp avatar pfalcon avatar dstromberg avatar dahaw avatar retsyo avatar devjohan avatar arteme avatar joerghw avatar pmderodat avatar dependabot[bot] avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.