Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/pharo-project/pharo
Pharo is a dynamic reflective pure object-oriented language supporting live programming inspired by Smalltalk.
https://github.com/pharo-project/pharo
bootstrap language live-programming mit object-oriented-programming pharo reflective tools
Last synced: about 1 month ago
JSON representation
Pharo is a dynamic reflective pure object-oriented language supporting live programming inspired by Smalltalk.
- Host: GitHub
- URL: https://github.com/pharo-project/pharo
- Owner: pharo-project
- License: other
- Created: 2016-07-25T09:55:28.000Z (over 8 years ago)
- Default Branch: Pharo12
- Last Pushed: 2024-04-10T11:32:16.000Z (7 months ago)
- Last Synced: 2024-04-10T18:48:54.971Z (7 months ago)
- Topics: bootstrap, language, live-programming, mit, object-oriented-programming, pharo, reflective, tools
- Language: Smalltalk
- Homepage: http://pharo.org
- Size: 105 MB
- Stars: 1,139
- Watchers: 43
- Forks: 337
- Open Issues: 1,268
-
Metadata Files:
- Readme: README.md
- Contributing: CONTRIBUTING.md
- Funding: .github/FUNDING.yml
- License: LICENSE
- Code of conduct: CODE_OF_CONDUCT.md
Awesome Lists containing this project
- awesome-for-beginners - Pharo - oriented language supporting live programming inspired by Smalltalk. (Smalltalk)
- jimsghstars - pharo-project/pharo - Pharo is a dynamic reflective pure object-oriented language supporting live programming inspired by Smalltalk. (Smalltalk)
- fucking-awesome-for-beginners - Pharo - oriented language supporting live programming inspired by Smalltalk. (Smalltalk)
README
# Pharo
This repository contains sources of the [Pharo language](http://pharo.org/). Pharo is a pure object-oriented programming language and a powerful environment, focused on simplicity and immediate feedback (think IDE and OS rolled into one). Visit us on https://www.pharo.org or [Pharo Discord Server](https://discord.gg/QewZMZa)
![Pharo screenshot](https://pbs.twimg.com/media/DBpdIGrXkAA8SJ1.jpg)
## Download Pharo
To download the Pharo stable version for your platform, please visit:
- [http://pharo.org/download](http://pharo.org/download)
## Virtual machine
This repository contains only sources of the Pharo image. The virtual machine source code is managed in a separate repository:
- [https://github.com/pharo-project/pharo-vm/](https://github.com/pharo-project/pharo-vm/)
## Automated Builds
This repository is being built on a [Jenkins server](https://ci.inria.fr/pharo-ci-jenkins2) and uploaded to [files.pharo.org](https://files.pharo.org).
- [Latest build - 64bit](http://files.pharo.org/image/120/latest-64.zip)
- [Latest build - 32bit](http://files.pharo.org/image/120/latest.zip)The minimal image contains the basic Pharo packages without the graphical user interface. It is useful as a base for server-side applications deployment.
- [Minimal image latest build - 64bit](http://files.pharo.org/image/120/latest-minimal-64.zip)
- [Minimal image latest build - 32bit](http://files.pharo.org/image/120/latest-minimal-32.zip)## Bootstrapping Pharo from sources
To bootstrap a new Pharo image you need the latest stable version of Pharo. For more information about bootstrapping, refer to [guillep/PharoBootstrap](https://github.com/guillep/PharoBootstrap).
The bootstrapping can be done on a properly-named branch using the following script:
```bash
./bootstrap/scripts/bootstrap.sh
```This will generate and archive images at various stages of the bootstrap process up to the full image in `Pharo12.0-64bit-hhhhhhh.zip` where hhhhhhh is the hash of the current checkout. Additional information on the stages of the bootstrap and how to snapshot during the process are provided as comments in bootstrap.sh.
* You can set the `BUILD_NUMBER` environment variable to a unique integer (this is typically used only for the [official builds](https://files.pharo.org/image/120/) and will default to `0` if not specified).
* You can set the `BOOTSTRAP_ARCH` environment variable to either `64` (the default) or `32`.
* You can set the `BOOTSTRAP_REPOSITORY` and `BOOTSTRAP_CACHE` environment variables to do the bootstrap outside of the source repository.
* You can set the `BOOTSTRAP_VMTARGET` environment variable to make the bootstrap use a virtual machine already present in your system (otherwise it will download it).
* If you are on a branch that doesn't follow the expected naming convention ('`PharoX.Y`'), then the script will pick an appropriate default (such as `Pharo12.0`). To build Pharo12.0 from a custom branch, you need to set `BRANCH_NAME=Pharo12` before the bootstrap script is run.### Bootstrapping with Docker
You can also use Docker if you prefer to control the bootstrapping environment completely. The following `Dockerfile` provides a Docker image with a fresh build. You can repeat the command `git pull && ./bootstrap/scripts/bootstrap.sh` in a container at any time:
```Dockerfile
# docker build --tag pharo .
# docker run --rm --name pharo -it pharo
FROM ubuntu:22.04
RUN apt-get update && apt-get -y install build-essential git wget zip
RUN git clone https://github.com/pharo-project/pharo.git /root/pharo
WORKDIR /root/pharo
RUN git pull && ./bootstrap/scripts/bootstrap.sh
ENTRYPOINT [ "bash" ]
```Alternatively, in the root directory of this project (after a `git clone`), you can set up a Docker volume pointing to the project directory and build from within the Docker container (nice for Windows environments!):
```bash
# in the host environment start a Docker container
docker run --rm -it -v $(pwd)/:/pharo --workdir /pharo ubuntu:22.04 bash
# in the container add the required packages and start the bootstrap script
apt-get update && apt-get -y install build-essential git wget zip
./bootstrap/scripts/bootstrap.sh
```## File format
This source code repository is exported in [Tonel format](https://github.com/pharo-vcs/tonel). In this format, packages are represented as directories and each class is inside a single file.
## How to contribute
Pharo is an open source project very friendly to contributions of the users. See the document [CONTRIBUTING](CONTRIBUTING.md) how you can help to improve Pharo.
## Pharo friendly links and organizations
[http://github.com/Pharo-project/PharoMap](http://github.com/Pharo-project/PharoMap)