git.s-ol.nu alive / 2a65f53
add website to version.moon, update rockspec s-ol 1 year, 1 month ago
10 changed file(s) with 119 addition(s) and 26 deletion(s). Raw diff Collapse all Expand all
3030 ## docs
3131
3232 With `make` the HTML documentation is generated in `docs/`.
33 The latest documentation is publicly available online at [alive.s-ol.nu][docs].
33 The latest documentation is publicly available online at [alv.s-ol.nu][docs].
3434
3535 ## starting the copilot
3636
6161 [discount]: https://luarocks.org/modules/craigb/discount
6262 [ldoc]: https://github.com/s-ol/LDoc
6363
64 [docs]: https://alive.s-ol.nu
65 [guide]: https://alive.s-ol.nu/guide.html
64 [docs]: https://alv.s-ol.nu
65 [guide]: https://alv.s-ol.nu/guide.html
55 --- exports
66 -- @table exports
77 -- @tfield string tag the last versions git tag
8 -- @tfield string web the repo web URL
9 -- @tfield string repo the git repo URL
8 -- @tfield string repo the repo web URL
9 -- @tfield string git the git repo URL
10 -- @tfield string web the project web URL
1011 -- @tfield string release the web URL of this release
1112 {
1213 tag: "v0.1-rc4"
13 web: "https://github.com/s-ol/alive"
14 repo: "https://github.com/s-ol/alive.git"
15 release: "https://github.com/s-ol/alive/releases/tag/v0.1-rc4"
14 repo: "https://github.com/s-ol/alive"
15 git: "https://github.com/s-ol/alive.git"
16 web: "https://alv.s-ol.nu"
17 release: "https://github.com/s-ol/alive/releases/tag/${TAG}"
1618 }
2727 \add "&File/&Open script", '^o', -> @open!
2828 \add "&File/&Quit", '^q', -> @window\hide!
2929 @pause = \add "Run (^P)", '^p', @\pause, nil, fl.MENU_TOGGLE
30 \add "Help", nil, -> fl.open_uri 'https://alv.s-ol.nu'
30 \add "Help", nil, -> fl.open_uri version.web
3131
3232 tile = fl.Tile 5, 40, 390, 160
3333 @window.resizable = tile
7474 about: =>
7575 fl.alert "alive #{version.tag} fltkCopilot.
7676
77 visit alv.s-ol.nu for more information."
77 visit #{version.web} for more information."
7878
7979 open: (file) =>
8080 file or= fl.file_chooser "Open Script", '*.alv', 'script.alv'
3535
3636 mkdir "dist/$BUNDLE/alv-lib"
3737 cat <<EOF >"dist/$BUNDLE/alv-lib/README.txt"
38 You can use this directory to add extensions to alive.
38 You can use this directory to add extensions to alv.
3939 See the extension documentation here for more information:
4040
41 https://alive.s-ol.nu/internals/topics/extensions.md.html
41 https://alv.s-ol.nu/stable/internals/topics/extensions.md.html
4242 EOF
4343
4444 cat <<EOF >"dist/$BUNDLE/README.md"
4545 alive $TAG
4646 ==========
4747
48 https://alive.s-ol.nu
48 https://alv.s-ol.nu
4949 https://github.com/s-ol/alive
5050
5151 License
2525 --- exports
2626 -- @table exports
2727 -- @tfield string tag the last versions git tag
28 -- @tfield string web the repo web URL
29 -- @tfield string repo the git repo URL
28 -- @tfield string repo the repo web URL
29 -- @tfield string git the git repo URL
30 -- @tfield string web the project web URL
3031 -- @tfield string release the web URL of this release
3132 {
3233 tag: "${TAG}"
33 web: "https://github.com/s-ol/alive"
34 repo: "https://github.com/s-ol/alive.git"
34 repo: "https://github.com/s-ol/alive"
35 git: "https://github.com/s-ol/alive.git"
36 web: "https://alv.s-ol.nu"
3537 release: "https://github.com/s-ol/alive/releases/tag/${TAG}"
3638 }
3739 EOF
6365 the interpreter keeps no state that you cannot manipulate directly in the
6466 source. This yields a direct-manipulation like experience with a purely
6567 text-based language and works without special editor support.]],
66 homepage = "https://alive.s-ol.nu",
68 homepage = "https://alv.s-ol.nu",
6769 license = "GPL-3",
6870 }
6971
8991 },
9092 bin = {
9193 "bin/alv",
92 "bin/alv-wx"
94 "bin/alv-wx",
95 "bin/alv-fltk",
9396 },
9497 },
9598 }
0 package = "alive"
1 version = "scm-4"
2
3 source = {
4 url = "git://github.com/s-ol/alive.git",
5 }
6
7 description = {
8 summary = "Experimental livecoding environment with persistent expressions",
9 detailed = [[
10 This is an experimental livecoding language and environment, in which
11 expressions persist and update until they are removed from the source code, and
12 the interpreter keeps no state that you cannot manipulate directly in the
13 source. This yields a direct-manipulation like experience with a purely
14 text-based language and works without special editor support.]],
15 homepage = "https://alv.s-ol.nu",
16 license = "GPL-3",
17 }
18
19 dependencies = {
20 "lua",
21 "moonscript >= 0.5.0",
22 "lpeg ~> 0.10",
23 "luafilesystem",
24 "luasystem",
25 "luasocket",
26 "osc",
27 }
28
29 build = {
30 type = "builtin",
31 modules = {},
32 copy_directories = { "docs" },
33 install = {
34 lua = {
35 ["alv.ast"] = "alv/ast.moon",
36 ["alv.base.builtin"] = "alv/base/builtin.moon",
37 ["alv.base.fndef"] = "alv/base/fndef.moon",
38 ["alv.base.init"] = "alv/base/init.moon",
39 ["alv.base.input"] = "alv/base/input.moon",
40 ["alv.base.match"] = "alv/base/match.moon",
41 ["alv.base.op"] = "alv/base/op.moon",
42 ["alv.base.pureop"] = "alv/base/pureop.moon",
43 ["alv.builtin"] = "alv/builtin.moon",
44 ["alv.cell"] = "alv/cell.moon",
45 ["alv.copilot"] = "alv/copilot.moon",
46 ["alv.cycle"] = "alv/cycle.moon",
47 ["alv.error"] = "alv/error.moon",
48 ["alv.init"] = "alv/init.moon",
49 ["alv.invoke"] = "alv/invoke.moon",
50 ["alv.logger"] = "alv/logger.moon",
51 ["alv.module"] = "alv/module.moon",
52 ["alv.parsing"] = "alv/parsing.moon",
53 ["alv.registry"] = "alv/registry.moon",
54 ["alv.result.base"] = "alv/result/base.moon",
55 ["alv.result.const"] = "alv/result/const.moon",
56 ["alv.result.evt"] = "alv/result/evt.moon",
57 ["alv.result.init"] = "alv/result/init.moon",
58 ["alv.result.io"] = "alv/result/io.moon",
59 ["alv.result.sig"] = "alv/result/sig.moon",
60 ["alv.rtnode"] = "alv/rtnode.moon",
61 ["alv.scope"] = "alv/scope.moon",
62 ["alv.tag"] = "alv/tag.moon",
63 ["alv.type"] = "alv/type.moon",
64 ["alv.util"] = "alv/util.moon",
65 ["alv.version"] = "alv/version.moon",
66
67 ["alv-lib.logic"] = "alv-lib/logic.moon",
68 ["alv-lib.math"] = "alv-lib/math.moon",
69 ["alv-lib.midi"] = "alv-lib/midi.moon",
70 ["alv-lib.midi.core"] = "alv-lib/midi/core.moon",
71 ["alv-lib.midi.launchctl"] = "alv-lib/midi/launchctl.moon",
72 ["alv-lib.osc"] = "alv-lib/osc.moon",
73 ["alv-lib.pilot"] = "alv-lib/pilot.moon",
74 ["alv-lib.random"] = "alv-lib/random.moon",
75 ["alv-lib.sc"] = "alv-lib/sc.moon",
76 ["alv-lib.string"] = "alv-lib/string.moon",
77 ["alv-lib.time"] = "alv-lib/time.moon",
78 ["alv-lib.util"] = "alv-lib/util.moon",
79 },
80 bin = {
81 "bin/alv",
82 "bin/alv-wx",
83 "bin/alv-fltk",
84 },
85 },
86 }
6161 -- builtin-name; mod.name/name; mod.name
6262 link = (ref) ->
6363 return version.web if ref == '*web*'
64 return version.git if ref == '*git*'
6465 return version.repo if ref == '*repo*'
6566 return version.release if ref == '*release*'
6667
5858 required.
5959
6060 After installing the dependencies, you can download the `alv` source code
61 from the [releases page][:*release*:], or clone the [git repository][:*web*:]:
61 from the [releases page][:*release*:], or clone the [git repository][:*repo*:]:
6262
6363 $ git clone https://github.com/s-ol/alive.git
6464
1515 it to).
1616
1717 `alv` is free and open source software. The code is currently being hosted
18 [on github][:*web*:], and is licensed under [GPLv3][license].
18 [on github][:*repo*:], and is licensed under [GPLv3][license].
1919
2020 If you want to learn more or try out `alv` yourself, the
2121 [getting started][guide] page is a good place to start. On the other hand, if
154154 to the same value it already had. They are updated using `SigStream:set`.
155155 - `EvtStream`s transmit *momentary events*. They can transmit multiple events
156156 in a single tick. `EvtStream`s do not keep a value set on the last tick on
157 the next tick. They are updated using `EvtStream:add`.
157 the next tick. They are updated using `EvtStream:set`.
158158 - `IOStream`s are like `EvtStream`s, but their `IOStream:poll` method is
159159 polled by the event loop at the start of every tick. This gives them a chance
160160 to effectively create changes 'out of thin air' and kickstart the execution
189189 To implement a custom IOStream, create it as a class that inherits from the
190190 `IOStream` base and implement the constructor and `IOStream:poll`:
191191
192 import IOStream from require 'alv.base'
192 import T, IOStream from require 'alv.base'
193193
194194 class UnreliableStream extends IOStream
195 new: => super 'bang'
195 new: => super T.bang
196196
197197 poll: =>
198198 if math.random! < 0.1
199 @add true
199 @set true
200200
201201 In the constructor, you should call the super-constructor `EvtStream.new` to
202202 set the event type. Often this will be a custom event that is only used inside
203203 your extension (such as e.g. the `midi/port` type in the [midi][modules-midi]
204 module), but it can also be a primitive type like `'num'` in this example. In
204 module), but it can also be a primitive type like `T.bang` in this example. In
205205 `:poll`, your IOStream is given a chance to communicate with the external world
206206 and create any resulting events. The example stream above randomly sends bang
207207 events out, with a 10% chance each 'tick' of the system. Note that there is no