• This repository has been archived on 15/Jan/2022
  • Stars
    star
    158
  • Rank 229,974 (Top 5 %)
  • Language
    Elixir
  • License
    Apache License 2.0
  • Created over 4 years ago
  • Updated about 3 years ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

Debian packaging of Elixir

Elixir

CI Build status

Elixir is a dynamic, functional language designed for building scalable and maintainable applications.

For more about Elixir, installation and documentation, check Elixir's website.

Policies

New releases are announced in the announcement mailing list. You can subscribe by sending an email to [email protected] and replying to the confirmation email.

All security releases will be tagged with [security]. For more information, please read our Security Policy.

All interactions in our official communication channels follow our Code of Conduct.

Bug reports

For reporting bugs, visit our issue tracker and follow the steps for reporting a new issue. Please disclose security vulnerabilities privately at [email protected].

Compiling from source

For the many different ways to install Elixir, see our installation instructions on the website. To compile from source, you can follow the steps below.

First, install Erlang. After that, clone this repository to your machine, compile and test it:

git clone https://github.com/elixir-lang/elixir.git
cd elixir
make clean test

Note: if you are running on Windows, this article includes important notes for compiling Elixir from source on Windows.

If Elixir fails to build (specifically when pulling in a new version via git), be sure to remove any previous build artifacts by running make clean, then make test.

If tests pass, you can use Interactive Elixir by running bin/iex in your terminal.

However, if tests fail, it is likely that you have an outdated Erlang/OTP version (Elixir requires Erlang/OTP 22.0 or later). You can check your Erlang/OTP version by calling erl in the command line. You will see some information similar to:

Erlang/OTP 22 [erts-9.0] [smp:2:2] [async-threads:10] [kernel-poll:false]

If you have properly set up your dependencies and tests still fail, you may want to open up a bug report, as explained next.

Proposing new features

For proposing new features, please start a discussion in the Elixir Core mailing list. Keep in mind that it is your responsibility to argue and explain why a feature is useful and how it will impact the codebase and the community.

Once a proposal is accepted, it will be added to the issue tracker. The issue tracker focuses on actionable items and it holds a list of upcoming enhancements and pending bugs. All entries in the tracker are tagged for clarity and to ease collaboration.

Features and bug fixes that have already been merged and will be included in the next release are marked as "closed" in the issue tracker and are added to the changelog.

Contributing

We welcome everyone to contribute to Elixir. To do so, there are a few things you need to know about the code. First, Elixir code is divided in applications inside the lib folder:

  • elixir - Elixir's kernel and standard library

  • eex - EEx is the template engine that allows you to embed Elixir

  • ex_unit - ExUnit is a simple test framework that ships with Elixir

  • iex - IEx stands for Interactive Elixir: Elixir's interactive shell

  • logger - Logger is the built-in logger

  • mix - Mix is Elixir's build tool

You can run all tests in the root directory with make test and you can also run tests for a specific framework make test_#{APPLICATION}, for example, make test_ex_unit. If you just changed something in the Elixir's standard library, you can run only that portion through make test_stdlib.

If you are changing just one file, you can choose to compile and run tests only for that particular file for fast development cycles. For example, if you are changing the String module, you can compile it and run its tests as:

bin/elixirc lib/elixir/lib/string.ex -o lib/elixir/ebin
bin/elixir lib/elixir/test/elixir/string_test.exs

To recompile (including Erlang modules):

make compile

After your changes are done, please remember to run make format to guarantee all files are properly formatted and then run the full suite with make test.

If your contribution fails during the bootstrapping of the language, you can rebuild the language from scratch with:

make clean_elixir compile

Similarly, if you can't get Elixir to compile or the tests to pass after updating an existing checkout, run make clean compile. You can check the official build status on Cirrus CI. More tasks can be found by reading the Makefile.

With tests running and passing, you are ready to contribute to Elixir and send a pull request. We have saved some excellent pull requests we have received in the past in case you are looking for some examples:

Reviewing changes

Once a pull request is sent, the Elixir team will review your changes. We outline our process below to clarify the roles of everyone involved.

All pull requests must be approved by two committers before being merged into the repository. If any changes are necessary, the team will leave appropriate comments requesting changes to the code. Unfortunately we cannot guarantee a pull request will be merged, even when modifications are requested, as the Elixir team will re-evaluate the contribution as it changes.

Committers may also push style changes directly to your branch. If you would rather manage all changes yourself, you can disable "Allow edits from maintainers" feature when submitting your pull request.

The Elixir team may optionally assign someone to review a pull request. If someone is assigned, they must explicitly approve the code before another team member can merge it.

When the review finishes, your pull request will be squashed and merged into the repository. If you have carefully organized your commits and believe they should be merged without squashing, please mention it in a comment.

Building documentation

Building the documentation requires ExDoc to be installed and built alongside Elixir:

# After cloning and compiling Elixir, in its parent directory:
git clone git://github.com/elixir-lang/ex_doc.git
cd ex_doc && ../elixir/bin/mix do deps.get, compile

Now go back to Elixir's root directory and run:

make docs                  # to generate HTML pages
make docs DOCS_FORMAT=epub # to generate EPUB documents

This will produce documentation sets for elixir, eex, ex_unit, iex, logger, and mix under the doc directory. If you are planning to contribute documentation, please check our best practices for writing documentation.

Development links

License

"Elixir" and the Elixir logo are copyright (c) 2012 Plataformatec.

Elixir source code is released under Apache License 2.0.

Check NOTICE and LICENSE files for more information.

More Repositories

1

kobo-ja-dict-enhance

Enhance built-in Japanese dictionaries from Kobo with English definitions
Perl
428
star
2

cinnadock-p2

For of the Cinnadock Plus plugin to update it to current Cinnamon
JavaScript
423
star
3

debian-gwaei

C
421
star
4

debian-graph

Representing Debian UDD in a graph database
Perl
421
star
5

jfontmaps

dvipdfmx map files and support programs for Japanese font setup
Perl
420
star
6

piwigopress

Piwigo-Wordpress integration
PHP
420
star
7

build-tlptexlive

scripts and patches for building tlptexlive
Shell
420
star
8

debian-speg

Python
420
star
9

eagloss

multi script chinese glossary
TeX
420
star
10

debian-pycson

Python
419
star
11

debian-mu

C++
419
star
12

debian-xxhash

C
418
star
13

pgf-blur

Development of pg-blur package
TeX
417
star
14

nautilus-sendto-scripts

Development of a nautilus-sendto extension that allows sending to user-configurable scripts
Gettext Catalog
417
star
15

slick-google-map-plugin

Free Google map Wordpress plugin
PHP
416
star
16

ptex2pdf

convert Japanese TeX documents to pdf
Lua
415
star
17

texlive-rewrite

Rewrite of some core scripts in TeX Live from shell to perl
Perl
413
star
18

sony-control-center

Fork of the sony-f11-vaio-control-center to work with newer kernels and with all Sony laptops supported by the sony-laptop kernel module.
C++
412
star
19

sony-laptop-zseries

adapted kernel module for zseries laptops
C
412
star
20

rfkill-applet

general rfkill applet for the gnome panel written in python
Python
411
star
21

tlmgr-electron-react

tlmgr gui using electron and react
JavaScript
411
star
22

tlptexlive-root

packaging stuff for tlptexlive
Perl
410
star
23

okular-debian

packaging okular for debian
C++
163
star
24

acme-debian

Debian packaging of python acme
Python
158
star
25

certbot-debian

Debian packaging of certbot
Python
157
star
26

qpdfview-debian

Debian packaging of qpdfview
HTML
152
star
27

mupdf-debian

packaging of mupdf for debian
C
151
star
28

pymupdf-debian

Packaging of pymupdf for Debian
SWIG
150
star
29

rspamd-debian

debian packaging of rspamd
C
150
star
30

susi-assistant

SUSI Smart Assistant
Python
110
star
31

rssguard-debian

Debian packaging of RSS Guard
C++
6
star