-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathREADME.fbld
More file actions
104 lines (85 loc) · 4.15 KB
/
README.fbld
File metadata and controls
104 lines (85 loc) · 4.15 KB
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
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
@doc Fable README
@@FbleVersionStamp
Fable is a programming language project. It includes a specification,
reference implementation, library, and sample applications for the fble
programming language.
@section Overview
Start with the simplicity of C. Redesign the foundations from the ground up
based on a strong type system and functional programming. Use automatic
memory management and make sure there is a clear way to reason about
performance. Include support for generics and modularity. Remove as many
hard edges, corner cases and redundancies in the language as possible.
The result is a simple, general purpose, statically typed, strict, pure
functional programming language with automatic memory management, support
for polymorphism and modularity, user-defined primitive data types, and a
hint of C-like syntax.
@section Source
The source code for fble is available from github at
@url[https://github.com/ruhler/fable]{}.
@section Documentation
@def[Fble Language Specification] @fbld[spec/fble.fbld]{}
@def[Fble Style Guide] @fbld[spec/style.fbld]{}
@def[Fbld Document Markup Specification] @fbld[fbld/fbld.fbld]{}
@def[Tutorials] @fbld[tutorials/Tutorials.fbld]{}
@def[Release Notes] @fbld[Release.fbld]{}
The latest generated documentation is also available online at
@url[https://ruhler.github.io/fable]{}.
@section Directory Structure
@def[bin/] Source code for fble compiler binaries.
@def[book/] Drafts for a book about the design of the fble language.
@def[fbld/] A lightweight document markup language used for documenting fble.
@def[include/] Public header files for the fble library.
@def[lib/] Source code for an fble interpreter and compiler implemented in C.
@def[pkgs/] Sample fble library and application packages.
@def[spec/] Specification of the fble language, including spec tests.
@def[test/] Source code for fble test binaries and other test utilities.
@def[thoughts/] A collection of running discussions about fble.
@def[tutorials/] Fble language tutorials.
@def[vim/] Vim syntax files for fbld and fble.
@section Build Requirements
To build and run the tests for all of fble, the following software is
required. The version numbers provided are versions that are known to work:
@def[Expect 5.45.4] To test fble debugging.
@def[GNU Binutils for Debian 2.31.1] For assembling compiled fble programs.
@def[GNU Bison 3.3.2] For generating the fble parser.
@def[GNU Compiler Collection (Debian 8.3.0-6) 8.3.0] For compiling fble.
@def[GNU coreutils 8.30] Used in the build system.
@def[GNU Debugger (Debian 8.2.1-2+b3) 8.2.1] Used to test fble debugging.
@def[GNU diffutils 3.7] For some test cases.
@def[GNU grep 3.3] For some test cases.
@def[GNU groff version 1.22.4] For formatting help usage text.
@def[Ninja 1.10.1] For the build system.
@def[Open GL 1.2] For graphical fble apps.
@def[Simple DirectMedia Layer 2.0.9] For graphical fble apps.
@def[Tcl 8.6] For generating build ninja files.
To install required dependencies on a debian based system:
@code[sh] @
apt install \
expect binutils bison coreutils \
gcc gdb diffutils grep groff-base \
ninja-build libgl-dev libsdl2-dev tcl8.6
To install required dependencies on an MSYS2 UCRT64 based system:
@code[sh] @
pacman -S tcl ninja gcc bison groff diffutils \
mingw-w64-ucrt-x86_64-toolchain \
mingw-w64-ucrt-x86_64-SDL2 \
mingw-w64-ucrt-x86_64-mesa
export MSYS2_ARG_CONV_EXCL='*'
@section Build
To build and install:
@code[sh] @
./configure --prefix=/usr/local && ninja && ninja install
Additional ninja targets:
@def[tests] Runs tests on uninstalled binaries.
@def[www] Builds html documentation.
@def[check] Builds and tests everything without installing anything.
@section Vim Files
Vim ftplugin, syntax, and indent files for the fble language are available
in the `vim/` directory. You can run the following commands to install these
files:
@code[sh] @
mkdir -p ~/.vim/ftdetect ~/.vim/ftplugin ~/.vim/indent ~/.vim/syntax
cp vim/ftdetect/* ~/.vim/ftdetect
cp vim/ftplugin/* ~/.vim/ftplugin
cp vim/indent/* ~/.vim/indent
cp vim/syntax/* ~/.vim/syntax