Giter VIP home page Giter VIP logo

clojure-py's Introduction

clojure-py

An implementation of Clojure in pure Python. Build Status

Why Python?

It is our belief that static virtual machines make very poor runtimes for dynamic languages. They constrain the languages to their view of what the "world should look like" and limit the options available to language implementors. We are attempting to prove this by writing an implementation of Clojure that runs on the Python VM. We believe that with a proper dynamic JIT (like pypy) a version of clojure running on a dynamic VM can outperform its JVM and CLR counterparts.

Aside from that, there are many Python libraries like PySide (Qt GUI), numpy, scipy, and stackless that do not have JVM counterparts, or at least the Python implementations are easier to use and learn. clojure-py will integrate tightly with thy Python VM and will be able to use all of these libraries.

Basic concepts

Python builtins are available under the py/ namespace. Actual python bytecodes can be injected via py.bytecodes/OP

Viewing the code at https://github.com/halgari/clojure-py/blob/master/clojure/core.clj is probably the best way to get a feeling of what is possible, and how clojure-py implements certain functions.

One note: clojure-py implements the new "property vs calling method" design used in ClojureScript:

  (.__name__ (module)) ; same as module.__name__() in python

  (.-__name__ (module)) ; same as module.__name__ in python

How can I help?

At this point, find a need and fill it! Play around with clojure-py, start porting your favorite clojure lib, and see what is missing. Also feel free to join our mailing list. We (the clojure-py devs) normally just send out a message either we plan on working on a certain aspect of clojure-py (either through a issue report or through the mailing list). Currently there are quite a few functions in clojure.core that need porting. Drop by the mailing list and let us know what your interests are, and we'll be glad to offer suggestions and help however we can.

Blog

From time to time, we'll post status updates, ideas and plans to this blog http://clojure-py.blogspot.com/

Installation

Install 0.1.0 release:

easy_install clojure-py
clojurepy

To run from GitHub checkout:

python ./clojure.py

Unit tests

# (must 'easy_install nose' or 'pip install nose' first)
nosetests

Running

clojurepy

License

Not endorsed by Rich Hickey, but this project contains code based on his work. Such code is licensed under the following license

Copyright (c) Rich Hickey. All rights reserved.
The use and distribution terms for this software are covered by the
Eclipse Public License 1.0 (http://opensource.org/licenses/eclipse-1.0.php)
which can be found in the file epl-v10.html at the root of this distribution.
By using this software in any fashion, you are agreeing to be bound by
the terms of this license.
You must not remove this notice, or any other, from this software.

The rest of this code also resides under the Eclipse Public License 1.0 same as Clojure.

clojure-py's People

Contributors

halgari avatar stirfoo avatar anntzer avatar lfranchi avatar adamfeuer avatar khinsen avatar angusb avatar redalastor avatar aschoerk avatar zachallaun avatar zephjc avatar pepijndevos avatar bymerej avatar brandonbloom avatar photex avatar

Watchers

 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.