summaryrefslogtreecommitdiff
path: root/docs/index.md
blob: b0b2baa4776f10b9e3c7cfffac75640d449632cc (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
# Kevins Programming Language (KPL) Specification

### Version 0.0.0

---

## Overview

KPL is a statically typed and just in time compiled scripting language. The goal is to be something lower level then JavaScript/Python/Ruby/Lua but on a higher level then Go.

This specification not only describes the language syntax but it's implementation because syntax reflects the implementation and vice versa.

#### Language Design Goals

* Single invocation, just run the code

* No operator precedence

* No default variables

* Type inference

* Automatically use threads

* All code can be run asynchronously, no built in asynchronous callback functions

```text
// Do Soemthing
readFile("filename", callback(data))
// Continue while readFile is running
// langauge equivalent
// Do Soemthing
Fn[name; callback] $ (
    ( read ) : `use "io"
    callback `sync read `sync name
) `async ("filename"; callback)
// Continue while readFile is running
```

* C interoperability

* Minimal dependencies, most X64 Linux distros shouldn't need to install anything to compile and run the source

* Lightweight, can run a VPS with 1 CPU Core and 1 Gigabyte of RAM

## Contents

1. ##### [Language](./language/index.md)
2. ##### [Type System](./type_system/index.md)
3. ##### [Application](./application/index.md)