Git Product home page Git Product logo

ark's Introduction

Ark Build Status license

Ark is a systems programming language focused on being practical and pragmatic. We want a language that is simple, easy to write, yet powerful enough to create readable, performant and concise code for any problem

On the right is a gif of an example program ark-gl written in Ark using OpenGL and GLFW.

Index

Getting Involved

Check out the contributing guide, there's a lot of information there to give you ideas of how you can help out.

Example

Ark is still a work in progress, this code sample reflects what Ark can do currently, though the way you write the following will likely change in the near future.

More examples can be found here.

// binding to printf
[c] func printf(fmt: ^u8, ...);

pub func main(argc: int, argv: ^^u8) -> int {
    // accessed via the C module
    C::printf(c"Running %s\n", ^argv);

    // mutable i, type inferred
    mut i := 0;

    for i < 5 {
        C::printf(c"%d\n", i);

        i += 1;
    }
    return 0;
}

Installing

Installing Ark is simple, you'll need a few dependencies before you get started:

Dependencies

Building

Once you have your dependencies setup, building ark from scratch is done by running the following commands:

$ git clone https://github.com/ark-lang/go-llvm.git $GOPATH/src/github.com/ark-lang/go-llvm
$ cd $GOPATH/src/github.com/ark-lang/go-llvm
$ ./build.sh
$ go get github.com/ark-lang/ark/...

The ark binary will be built in $GOPATH/bin. To use the compiler, make sure $GOPATH/bin is in your $PATH.

Compiling Ark code

Currently the module system Ark uses is a work in progress. As of writing this, each ark file represents a module. A module has a child-module "C" which contains all of the C functions and other bindings you may write.

Given the following project structure:

src/
  - entities/
    - entity.ark
    - player.ark
  - main.ark

To compile this, you would pass through the file which contains the main entry point (main function) to your program, which is conventionally named "main.ark".

Since our main file is in another folder, we need to set the src folder as an include directory so that the compiler doesn't think it's a module. We use the -I flag for this:

ark build -I src src/main.ark --loglevel=debug

This should compile your code, and produce an executable called "main", which you can then run.

For more information on the module system and how it works, refer to the "Modules and Dependencies" section in the Ark reference.

For more information on program flags, refer to the "Program Input", section in the Ark reference.

ark's People

Contributors

7bitlyrus avatar acconut avatar andars avatar built1n avatar dansawkins avatar felixangell avatar haneefmubarak avatar ianhedoesit avatar ianmurray avatar inphi avatar kiljacken avatar lilithwittmann avatar movingtomars avatar naegelejd avatar raoulvdberge avatar torwart avatar vnev avatar yorickdewid avatar zhiayang avatar

Watchers

 avatar  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.