All Projects → alantech → Alan

alantech / Alan

Autoscalable Programming Language

Programming Languages

typescript
32286 projects

Projects that are alternatives of or similar to Alan

parallax
A Tool for Automatic Parallelization of Deep Learning Training in Distributed Multi-GPU Environments.
Stars: ✭ 128 (-29.28%)
Mutual labels:  parallelization
Sorry Cypress
An open-source, on-premise, self-hosted alternative to Cypress Dashboard
Stars: ✭ 1,005 (+455.25%)
Mutual labels:  parallelization
Fastflow
FastFlow pattern-based parallel programming framework (formerly on sourceforge)
Stars: ✭ 137 (-24.31%)
Mutual labels:  parallelization
Mec
for mass exploiting
Stars: ✭ 448 (+147.51%)
Mutual labels:  parallelization
Gpusorting
Implementation of a few sorting algorithms in OpenCL
Stars: ✭ 9 (-95.03%)
Mutual labels:  parallelization
Parmap
Easy to use map and starmap python equivalents
Stars: ✭ 87 (-51.93%)
Mutual labels:  parallelization
django-collectfaster
Parallel file copying for Django's collectstatic.
Stars: ✭ 16 (-91.16%)
Mutual labels:  parallelization
Console Parallelization
Enables the parallelization of Symfony Console commands.
Stars: ✭ 166 (-8.29%)
Mutual labels:  parallelization
Mare
MaRe leverages the power of Docker and Spark to run and scale your serial tools in MapReduce fashion.
Stars: ✭ 11 (-93.92%)
Mutual labels:  parallelization
Swifter
A package which efficiently applies any function to a pandas dataframe or series in the fastest available manner
Stars: ✭ 1,844 (+918.78%)
Mutual labels:  parallelization
Future
🚀 R package: future: Unified Parallel and Distributed Processing in R for Everyone
Stars: ✭ 735 (+306.08%)
Mutual labels:  parallelization
Pbmcapply
Tracking the progress of mc*apply with progress bar.
Stars: ✭ 25 (-86.19%)
Mutual labels:  parallelization
Bonobo
Extract Transform Load for Python 3.5+
Stars: ✭ 1,475 (+714.92%)
Mutual labels:  parallelization
Softwarerenderer
Software rendering engine with PBR. Built from scratch on C++.
Stars: ✭ 323 (+78.45%)
Mutual labels:  parallelization
Parl
A high-performance distributed training framework for Reinforcement Learning
Stars: ✭ 2,348 (+1197.24%)
Mutual labels:  parallelization
alphasql
AlphaSQL provides Integrated Type and Schema Check and Parallelization for SQL file set mainly for BigQuery
Stars: ✭ 35 (-80.66%)
Mutual labels:  parallelization
Actor4j Core
Actor4j is an actor-oriented Java framework. Useful for building lightweighted microservices (these are the actors themselves or groups of them). Enhanced performance of message passing.
Stars: ✭ 48 (-73.48%)
Mutual labels:  parallelization
Cuneiform
Cuneiform distributed programming language
Stars: ✭ 175 (-3.31%)
Mutual labels:  parallelization
Future.apply
🚀 R package: future.apply - Apply Function to Elements in Parallel using Futures
Stars: ✭ 159 (-12.15%)
Mutual labels:  parallelization
Cucable Plugin
Maven plugin that simplifies running Cucumber Scenarios in parallel.
Stars: ✭ 110 (-39.23%)
Mutual labels:  parallelization
drawing

The Alan Programming Language

CI Docs Discord Reddit

⛓ Implicitly parallel across events, arrays, and IO - Alan recognizes and exploits opportunities for parallelization without parallel programming (threads, channels, futures, locks, etc.)

✅ Almost no runtime errors - Null references, deadlocks, livelocks, undefined variables, divide-by-zero, integer under/overflow, array out-of-bounds access, etc, are not possible in Alan.

🔒 Granular third party permissions - Alan's module resolution mechanism allows you to prevent third-party dependencies from having access to standard libraries that they should not have access to.



👩‍🚀 Alan is a programming language that does concurrency for you and can thus separate how the software is written from how it runs. To learn more about Alan, take a look at runnable examples or the most Frequently Asked Questions.


Installation


It is recommended to install Alan via the published artifacts. Simply download the zip or tar.gz file for your operating system, and extract the alan executable to somewhere in your $PATH, make sure it's marked executable (if not on Windows), and you're ready to roll.

Linux:

wget https://github.com/alantech/alan/releases/latest/download/alan-ubuntu.tar.gz
tar -xzf alan-ubuntu.tar.gz
sudo mv alan /usr/local/bin/alan

MacOS:

curl -OL https://github.com/alantech/alan/releases/latest/download/alan-macos.tar.gz
tar -xzf alan-macos.tar.gz
# sudo mkdir -p /usr/local/bin if the folder does not exist
sudo mv alan /usr/local/bin/alan

Windows:

Invoke-WebRequest -OutFile alan-windows.zip -Uri https://github.com/alantech/alan/releases/latest/download/alan-windows.zip
Expand-Archive -Path alan-windows.zip -DestinationPath C:\windows

Usage


To compile to Alan GraphCode and then run it with the AVM:

alan compile <source>.ln <whateveryouwant>.agc
alan run <whateveryouwant>.agc

You can also compile-and-run a source file with a simple:

alan <source>.ln

You can also transpile Alan to Javascript or one of it's intermediate representations.

Note: To better understand if we are building something people want to use we currently log an event when running an Alan command. Feel free to turn this off by setting the ALAN_TELEMETRY_OFF environment variable to true, but if you do please let us know how you are using Alan and how often!


Contributing


Source Installation:

If you wish to contribute to Alan, or if your operating system and/or CPU architecture do not match the above, you'll need a development environment to build Alan locally:

  • git (any recent version should work)
  • Node.js >=10.20.1
  • Rust >=1.45.0
  • A complete C toolchain (gcc, clang, msvc)

Once those are installed, simply:

git clone https://github.com/alantech/alan
cd alan
make
sudo make install

Integration tests:

Integration tests are in /bdd and defined using Shellspec. To run all integration tests:

make bdd

To run a single test file:

make bdd testfile=bdd/spec/001_event_spec.sh

To run a single test group use the line number corresponding to a Describe:

make bdd testfile=bdd/spec/001_event_spec.sh:30

License


The Alan Programming Language is made up of multiple sub-projects housed within this monorepo. Each subdirectory has its own license file and the project as a whole uses two licenses: The Apache 2.0 license and the Affero GPL 3.0 license, with the breakdown as follows:

  • Apache 2.0
    • bdd
    • js-runtime
    • std
  • AGPL 3.0
    • compiler
    • avm

The Apache 2.0 license is freely combinable with the GPL 3 series of licenses as well as with proprietary software, so the standard library and Javascript runtime library are freely combinable with your own software projects without any requirement to open source it.

The AGPL 3.0 license requires that any changes to the code are published and publicly accessible. This is to make sure that any advancements to the compiler and AVM are available to all. The licensing of these tools does not affect the licensing of the code they compile or run. Similarly, the GCC compiler collection is GPL 3.0 licensed, but code compiled by it is not GPL 3.0 licensed.

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].