https://github.com/brownplt/pyret-lang

The Pyret language.

https://github.com/brownplt/pyret-lang

Science Score: 36.0%

This score indicates how likely this project is to be science-related based on various indicators:

  • CITATION.cff file
  • codemeta.json file
    Found codemeta.json file
  • .zenodo.json file
    Found .zenodo.json file
  • DOI references
  • Academic publication links
  • Committers with academic emails
    22 of 66 committers (33.3%) from academic institutions
  • Institutional organization owner
  • JOSS paper metadata
  • Scientific vocabulary similarity
    Low similarity (15.9%) to scientific vocabulary

Keywords

compiler education language pyret

Keywords from Contributors

transformation cryptocurrencies cryptography version
Last synced: 5 months ago · JSON representation

Repository

The Pyret language.

Basic Info
  • Host: GitHub
  • Owner: brownplt
  • License: other
  • Language: JavaScript
  • Default Branch: horizon
  • Size: 466 MB
Statistics
  • Stars: 1,107
  • Watchers: 41
  • Forks: 117
  • Open Issues: 451
  • Releases: 0
Topics
compiler education language pyret
Created over 13 years ago · Last pushed 6 months ago
Metadata Files
Readme License

README.md

Yarr

Build Status

A scripting language.

To learn about the language, visit pyret.org.

To read an introduction of the language, visit the tour.

To read the documentation, visit pyret.org/docs/.

There are three main ways to use Pyret:

  1. If all you want to do is program in Pyret, there is a web-based environment at code.pyret.org that lets you run and save programs that should be all you need. If you're a student using Pyret, this is probably where you will do your assignments, for example.

  2. If all you want to do is program in Pyret at the command line, you should install pyret-npm from https://www.npmjs.com/package/pyret-npm, using an install command like:

    npm install -g pyret-npm

    (If you're new to node and npm, you might find https://nodejs.dev/learn/an-introduction-to-the-npm-package-manager and https://nodejs.dev/learn/npm-global-or-local-packages useful background).

  3. If you want to contribute to Pyret, or try out experimental features, the README starting below is for you.

The use of vocabulary from http://bvipirate.com/piratespeak/index.html is recommended when commenting and reporting issues.

Installing

First, make sure you've installed Node >= 6. Then run:

$ npm install
$ make
$ make test

It'll build the Pyret compiler and run the tests.

Running Pyret

If you just want to run Pyret, visit the online environment and work from there. If you're interested in Pyret development, read on:

The easiest way to run a Pyret program from the command-line is:

$ ./src/scripts/phaseX <path-to-pyret-program-here> [command-line-args...]

Where X is 0, A, B, or C, indicating a phase (described below). For example:

$ ./src/scripts/phaseA src/scripts/show-compilation.arr examples/ahoy-world.arr

Alternatively, you can compile and run a standalone JavaScript file via:

$ node build/phaseX/pyret.jarr \
    --build-runnable <path-to-pyret-program-here> \
    --outfile <path-for-standalone-js> \
    --builtin-js-dir src/js/trove/ \
    --builtin-arr-dir src/arr/trove \
    --require-config src/scripts/standalone-configA.json
$ node <path-for-standalone-js>

Phases

Pyret is a self-hosted compiler, which means that building requires some thought. If you're going to get into the guts of the compiler, a brief overview is worth reading. The build directory is separated into four distinct phases.

  1. Phase 0 is a standalone JavaScript file that contains an entire compiled Pyret compiler and runtime. This large blob gets committed into version control whenever we add a nontrivial feature to the language. It is large and somewhat slow to load, but whatever is in build/phase0/pyret.jarr is currently the canonical new-world implementation of Pyret.

  2. Phase A is set up to be populated with built versions of all the files for the compiler, built by the phase 0 compiler. Phase A is what most of the testing scripts run against, since it is the easiest to create, and after it is built it is your development snapshot of the compiler you're working on. However, just building phase1 is not enough to fully re-boostrap the compiler, because it contains a mix of old-compiler output and any new changes that were made to runtime files.

  3. Phase B is set up to be populated with built versions of all the files for the compiler, built by the phase A compiler. This version does represent a fully-bootstrapped compiler. If you run make phaseB, you get a new standalone compiler in the same format as build/phase0/pyret.js.

  4. Phase C builds from phase B. One major use of phase C is to check the bootstrapped compiler from phase B. Before committing a new standalone in phase 0, build both phaseB and phaseC, and check:

    $ diff build/phaseB/pyret.jarr build/phaseC/pyret.jarr
    

    And it should be empty, which indicates that the bootstrapped compiler is at least correct enough to recompile itself without error.

    To rebuild the compiler and get a new phase0, run

    $ make new-bootstrap
    

    which will build the phaseB and phaseC standalones, check the diff, and copy to phase0 if the diff is empty.

Owner

  • Name: Brown University PLT
  • Login: brownplt
  • Kind: organization

GitHub Events

Total
  • Create event: 11
  • Commit comment event: 1
  • Issues event: 20
  • Watch event: 39
  • Delete event: 3
  • Issue comment event: 71
  • Push event: 138
  • Pull request review event: 8
  • Gollum event: 1
  • Pull request review comment event: 11
  • Pull request event: 33
  • Fork event: 7
Last Year
  • Create event: 11
  • Commit comment event: 1
  • Issues event: 20
  • Watch event: 39
  • Delete event: 3
  • Issue comment event: 71
  • Push event: 138
  • Pull request review event: 8
  • Gollum event: 1
  • Pull request review comment event: 11
  • Pull request event: 33
  • Fork event: 7

Committers

Last synced: almost 3 years ago

All Time
  • Total Commits: 6,017
  • Total Committers: 66
  • Avg Commits per committer: 91.167
  • Development Distribution Score (DDS): 0.666
Top Committers
Name Email Commits
Joe Gibbs Politz j****e@c****u 2,011
Ben Lerner b****r@c****u 812
Joe Gibbs Politz j****z@g****m 729
Dorai Sitaram d****e@y****m 330
Jack Wrenn j****n@g****m 254
Ben Lerner b****r@c****u 239
mkolosick m****k@g****m 174
Daniel Patterson d****p@r****t 149
Joe Politz j****z@c****u 142
Cody Peter Mello c****y@c****u 138
John Ericson E****4@Y****m 120
Sarah Fischmann s****1@s****u 105
Jake Ellis j****s@b****u 103
Alexander St Laurent a****r@c****u 100
ian boros p****h@g****m 72
Stevie Strickland s****l@r****g 70
Sorawee Porncharoenwase s****e@g****m 58
Sorawee Porncharoenwase s****a@c****u 49
Philip Blair p****n@g****m 44
Justin j****o@c****u 39
Daniel Patterson d****p@d****t 37
Eric Caruso e****c@c****u 35
Jack Wrenn me@j****m 32
Alexander St Laurent s****r@g****m 23
Shriram Krishnamurthi sk@c****u 20
jonahkagan j****n@g****m 17
Sam Dooman s****n@g****m 15
Razi r****n@u****m 12
Zachary Espiritu me@z****m 6
Alexander St Laurent s****6@g****m 5
and 36 more...

Issues and Pull Requests

Last synced: 6 months ago

All Time
  • Total issues: 150
  • Total pull requests: 138
  • Average time to close issues: over 1 year
  • Average time to close pull requests: over 1 year
  • Total issue authors: 50
  • Total pull request authors: 21
  • Average comments per issue: 2.45
  • Average comments per pull request: 2.06
  • Merged pull requests: 79
  • Bot issues: 0
  • Bot pull requests: 16
Past Year
  • Issues: 22
  • Pull requests: 38
  • Average time to close issues: about 2 hours
  • Average time to close pull requests: 18 days
  • Issue authors: 7
  • Pull request authors: 8
  • Average comments per issue: 0.36
  • Average comments per pull request: 1.55
  • Merged pull requests: 19
  • Bot issues: 0
  • Bot pull requests: 4
Top Authors
Issue Authors
  • shriram (49)
  • jpolitz (19)
  • blerner (10)
  • dbp (9)
  • kfisler (4)
  • sorawee (4)
  • ironm00n (3)
  • ds26gte (3)
  • tdelv (2)
  • dyoo (2)
  • kishvanchee (2)
  • pnkfelix (2)
  • schanzer (2)
  • molenzwiebel (2)
  • user706 (2)
Pull Request Authors
  • blerner (30)
  • ds26gte (29)
  • jpolitz (26)
  • dependabot[bot] (16)
  • dbp (6)
  • sorawee (4)
  • ironm00n (4)
  • robertDurst (3)
  • asolove (3)
  • justinpombrio (2)
  • manaspurohit (2)
  • AnirudhNarsipur (2)
  • ess476 (2)
  • sidprasad (2)
  • brandon-gong (1)
Top Labels
Issue Labels
enhancement (5) error-message (4) Good First Issue (4) paper-cut (3) anchor/repartee (2) bug (1) type-checker (1) horizon-fixed (1)
Pull Request Labels
dependencies (16)

Packages

  • Total packages: 3
  • Total downloads:
    • npm 611 last-month
  • Total dependent packages: 1
    (may contain duplicates)
  • Total dependent repositories: 1
    (may contain duplicates)
  • Total versions: 10
  • Total maintainers: 2
npmjs.org: pyret-experimental-cli

The Pyret programming language

  • Homepage: https://www.pyret.org
  • License: Apache-2.0
  • Latest release: 0.8.10
    published almost 8 years ago
  • Versions: 8
  • Dependent Packages: 1
  • Dependent Repositories: 1
  • Downloads: 14 Last month
Rankings
Stargazers count: 2.4%
Forks count: 3.0%
Dependent repos count: 10.6%
Average: 14.8%
Dependent packages count: 21.3%
Downloads: 36.7%
Maintainers (1)
Last synced: 6 months ago
npmjs.org: @ironm00n/pyret-lang

The Pyret programming language

  • Versions: 1
  • Dependent Packages: 0
  • Dependent Repositories: 0
  • Downloads: 536 Last month
Rankings
Dependent repos count: 24.1%
Average: 29.4%
Dependent packages count: 34.7%
Maintainers (1)
Last synced: 6 months ago
npmjs.org: pyret-lang

The Pyret programming language

  • Versions: 1
  • Dependent Packages: 0
  • Dependent Repositories: 0
  • Downloads: 61 Last month
Rankings
Dependent repos count: 24.7%
Average: 30.2%
Dependent packages count: 35.7%
Maintainers (1)
Last synced: 6 months ago

Dependencies

package-lock.json npm
  • 185 dependencies
package.json npm
  • ascii-table ~0.0.9
  • benchmark ^2.1.4
  • browserify ^14.4.0
  • command-line-args ^3.0.1
  • error-stack-parser ^2.0.1
  • http 0.0.0
  • jasmine ^3.2.0
  • js-sha256 ^0.5.0
  • lockfile ^1.0.2
  • node-uuid ^1.4.8
  • q ~1.0.1
  • requirejs ~2.1.15
  • s-expression ~2.2.0
  • seedrandom ~2.3.10
  • sha.js ^2.4.8
  • source-map ^0.5.6
  • websocket ^1.0.32