├── .circleci └── config.yml ├── .gitignore ├── .hgtags ├── Dockerfile ├── LICENSE ├── Makefile ├── README.md ├── bundle.json ├── docs ├── .gitignore ├── 404.html ├── Gemfile ├── Gemfile.lock ├── LICENSE ├── README.md ├── _config.yml ├── _data │ └── docs.yml ├── _docs │ ├── start.md │ ├── start │ │ ├── clustering.md │ │ ├── compile.md │ │ ├── connect.md │ │ ├── disk-persistence.md │ │ ├── docker.md │ │ └── download.md │ ├── types.md │ └── types │ │ ├── gcount.md │ │ ├── mvreg.md │ │ ├── pncount.md │ │ ├── system.md │ │ ├── tlog.md │ │ ├── treg.md │ │ └── ujson.md ├── _includes │ ├── doc_stub.html │ ├── docs_nav.html │ ├── footer.html │ ├── head.html │ ├── js_files.html │ ├── section_nav.html │ └── topnav.html ├── _layouts │ ├── default.html │ └── docs.html ├── _sass │ ├── _bootstrap.scss │ ├── _syntax-highlighting.scss │ ├── _typeahead.scss │ ├── bootstrap │ │ ├── _alerts.scss │ │ ├── _badges.scss │ │ ├── _breadcrumbs.scss │ │ ├── _button-groups.scss │ │ ├── _buttons.scss │ │ ├── _carousel.scss │ │ ├── _close.scss │ │ ├── _code.scss │ │ ├── _component-animations.scss │ │ ├── _dropdowns.scss │ │ ├── _forms.scss │ │ ├── _glyphicons.scss │ │ ├── _grid.scss │ │ ├── _input-groups.scss │ │ ├── _jumbotron.scss │ │ ├── _labels.scss │ │ ├── _list-group.scss │ │ ├── _media.scss │ │ ├── _mixins.scss │ │ ├── _modals.scss │ │ ├── _navbar.scss │ │ ├── _navs.scss │ │ ├── _normalize.scss │ │ ├── _pager.scss │ │ ├── _pagination.scss │ │ ├── _panels.scss │ │ ├── _popovers.scss │ │ ├── _print.scss │ │ ├── _progress-bars.scss │ │ ├── _responsive-embed.scss │ │ ├── _responsive-utilities.scss │ │ ├── _scaffolding.scss │ │ ├── _tables.scss │ │ ├── _theme.scss │ │ ├── _thumbnails.scss │ │ ├── _tooltip.scss │ │ ├── _type.scss │ │ ├── _utilities.scss │ │ ├── _variables.scss │ │ ├── _wells.scss │ │ └── mixins │ │ │ ├── _alerts.scss │ │ │ ├── _background-variant.scss │ │ │ ├── _border-radius.scss │ │ │ ├── _buttons.scss │ │ │ ├── _center-block.scss │ │ │ ├── _clearfix.scss │ │ │ ├── _forms.scss │ │ │ ├── _gradients.scss │ │ │ ├── _grid-framework.scss │ │ │ ├── _grid.scss │ │ │ ├── _hide-text.scss │ │ │ ├── _image.scss │ │ │ ├── _labels.scss │ │ │ ├── _list-group.scss │ │ │ ├── _nav-divider.scss │ │ │ ├── _nav-vertical-align.scss │ │ │ ├── _opacity.scss │ │ │ ├── _pagination.scss │ │ │ ├── _panels.scss │ │ │ ├── _progress-bar.scss │ │ │ ├── _reset-filter.scss │ │ │ ├── _reset-text.scss │ │ │ ├── _resize.scss │ │ │ ├── _responsive-visibility.scss │ │ │ ├── _size.scss │ │ │ ├── _tab-focus.scss │ │ │ ├── _table-row.scss │ │ │ ├── _text-emphasis.scss │ │ │ ├── _text-overflow.scss │ │ │ └── _vendor-prefixes.scss │ └── bootswatch │ │ ├── LICENSE │ │ └── custom │ │ ├── _bootswatch.scss │ │ └── _variables.scss ├── css │ ├── font-awesome.min.css │ └── main.scss ├── favicon.ico ├── fonts │ ├── FontAwesome.otf │ ├── fontawesome-webfont.eot │ ├── fontawesome-webfont.svg │ ├── fontawesome-webfont.ttf │ ├── fontawesome-webfont.woff │ └── fontawesome-webfont.woff2 ├── img │ └── bg.jpg ├── index.html ├── js │ ├── bootstrap.min.js │ ├── main.js │ └── typeahead.bundle.min.js └── search.json ├── jylis ├── _conn.pony ├── _listen.pony ├── _name_fn.pony ├── _name_tokens_fn.pony ├── address.pony ├── cluster.pony ├── cluster_listen_notify.pony ├── cluster_notify.pony ├── config.pony ├── database.pony ├── database_codec.pony ├── disk.pony ├── dispose.pony ├── framed_notify.pony ├── framing.pony ├── heart.pony ├── help.pony ├── log.pony ├── logo.pony ├── main.pony ├── msg.pony ├── name_generator.pony ├── repo_gcount.pony ├── repo_manager.pony ├── repo_mvreg.pony ├── repo_pncount.pony ├── repo_system.pony ├── repo_tlog.pony ├── repo_treg.pony ├── repo_ujson.pony ├── server.pony ├── server_listen_notify.pony ├── server_notify.pony ├── system.pony └── test │ ├── _expect_respond.pony │ ├── _wait.pony │ ├── main.pony │ ├── test_address.pony │ ├── test_cluster.pony │ ├── test_disk.pony │ ├── test_framing.pony │ ├── test_msg.pony │ └── test_name_generator.pony └── spec ├── cluster_spec.rb ├── disk_spec.rb ├── doc_spec.rb ├── spec_helper.rb ├── support ├── jylis.rb ├── ujson.rb └── util.rb └── system_spec.rb /.circleci/config.yml: -------------------------------------------------------------------------------- 1 | version: 2 2 | jobs: 3 | vs-ponyc-master: 4 | docker: 5 | - image: ponylang/ponyc:latest 6 | steps: 7 | - checkout 8 | - run: make ci-setup 9 | - run: make ci 10 | vs-ponyc-release: 11 | docker: 12 | - image: ponylang/ponyc:release 13 | steps: 14 | - checkout 15 | - run: make ci-setup 16 | - run: make ci 17 | nightly-release: 18 | machine: true 19 | steps: 20 | - checkout 21 | - run: make release 22 | 23 | workflows: 24 | version: 2 25 | commit: 26 | jobs: 27 | - vs-ponyc-release 28 | nightly: 29 | triggers: 30 | - schedule: 31 | cron: "0 0 * * *" 32 | filters: 33 | branches: 34 | only: master 35 | jobs: 36 | - vs-ponyc-master 37 | - nightly-release 38 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | .deps 2 | bin 3 | compat 4 | -------------------------------------------------------------------------------- /.hgtags: -------------------------------------------------------------------------------- 1 | 0bb5e5f025a975e8d4bad023c780d906f0148c94 gh-pages 2 | 0bb5e5f025a975e8d4bad023c780d906f0148c94 gh-pages 3 | 0000000000000000000000000000000000000000 gh-pages 4 | 0000000000000000000000000000000000000000 gh-pages 5 | 0000000000000000000000000000000000000000 gh-pages 6 | -------------------------------------------------------------------------------- /Dockerfile: -------------------------------------------------------------------------------- 1 | FROM alpine:3.7 2 | 3 | # Install Pony dependencies and other build tools. 4 | ENV LLVM_VERSION=3.9 5 | RUN apk add --update \ 6 | alpine-sdk clang-dev linux-headers libexecinfo-dev binutils-gold \ 7 | libressl-dev pcre2-dev coreutils llvm${LLVM_VERSION}-dev 8 | ENV LLVM_CONFIG=llvm-config-3.9 9 | 10 | # Install Pony compiler and Pony runtime. 11 | ENV PONYC_GIT_URL https://github.com/ponylang/ponyc 12 | RUN git clone --depth 1 ${PONYC_GIT_URL} /tmp/ponyc && \ 13 | cd /tmp/ponyc && \ 14 | env CC=clang make default_pic=true install && \ 15 | rm -rf /tmp/ponyc 16 | 17 | # Install Pony dependency manager (stable). 18 | # TODO: use master branch when this branch has been merged 19 | ENV STABLE_GIT_URL https://github.com/ponylang/pony-stable 20 | RUN git clone --depth 1 ${STABLE_GIT_URL} /tmp/pony-stable && \ 21 | cd /tmp/pony-stable && \ 22 | make config=release install && \ 23 | rm -rf /tmp/pony-stable 24 | 25 | # Build the application as a static binary. 26 | # TODO: use --runtimebc (available only when clang version matches LLVM version) 27 | ENV CC=clang 28 | RUN mkdir /src 29 | WORKDIR /src 30 | COPY Makefile bundle.json /src/ 31 | COPY jylis /src/jylis 32 | RUN stable fetch && stable env ponyc --static -o release jylis 33 | 34 | # Transfer the static binary to a new empty image. 35 | FROM scratch 36 | COPY --from=0 /src/release/jylis . 37 | ENTRYPOINT ["./jylis"] 38 | -------------------------------------------------------------------------------- /Makefile: -------------------------------------------------------------------------------- 1 | all: bin/jylis 2 | .PHONY: all test spec clean lldb lldb-test ci ci-setup release 3 | 4 | PKG=jylis 5 | REPO_URL=https://github.com/jemc/jylis 6 | COMPAT_BRANCH=master 7 | 8 | bin/${PKG}: bundle.json $(shell find ${PKG} -name *.pony) 9 | mkdir -p bin 10 | stable env ponyc --debug -o bin ${PKG} 11 | 12 | bin/test: bundle.json $(shell find ${PKG} -name *.pony) 13 | mkdir -p bin 14 | stable env ponyc --debug -o bin ${PKG}/test 15 | 16 | compat/bin/${PKG}: $(shell find compat -name bundle.json) $(shell find compat/${PKG} -name *.pony) 17 | git clone ${REPO_URL} --depth 1 --branch ${COMPAT_BRANCH} compat || \ 18 | git --work-tree compat --git-dir compat/.git pull 19 | mkdir -p compat/bin 20 | stable env ponyc --debug -o compat/bin compat/${PKG} 21 | 22 | test: bin/test 23 | $^ 24 | 25 | spec: bin/${PKG} compat/bin/${PKG} 26 | rspec 27 | 28 | clean: 29 | rm -rf bin 30 | 31 | lldb: 32 | stable env lldb -o run -- $(shell which ponyc) --debug -o /tmp ${PKG}/test 33 | 34 | lldb-test: bin/test 35 | stable env lldb -o run -- bin/test 36 | 37 | ci: test spec 38 | 39 | ci-setup: 40 | apt-get update 41 | apt-get install -y libpcre2-dev ruby 42 | gem install rspec:3.7.0 redis:4.0.1 43 | stable fetch 44 | 45 | bin/${PKG}-release: bundle.json $(shell find ${PKG} -name *.pony) 46 | mkdir -p bin 47 | docker build -t ${PKG}-release . 48 | docker create --name ${PKG}-release ${PKG}-release 49 | docker cp ${PKG}-release:/${PKG} bin/${PKG}-release 50 | docker rm -v ${PKG}-release 51 | 52 | # The `make release` target will update the "nightly" release binary on GitHub. 53 | # It will create a new tag named `nightly-{unix-time}` at current master. 54 | # Remove the binary previously uploaded there, and upload the new one. 55 | GITHUB_RELEASE_ID=10442813 56 | GITHUB_AUTH=-H "Authorization: token ${GITHUB_API_TOKEN}" 57 | GITHUB_API_URL=https://api.github.com/repos/jemc/${PKG} 58 | GITHUB_UPLOADS_URL=https://uploads.github.com/repos/jemc/${PKG} 59 | release: bin/${PKG}-release 60 | @curl -X PATCH ${GITHUB_AUTH} ${GITHUB_API_URL}/releases/${GITHUB_RELEASE_ID} --data '{"tag_name": "nightly-$(shell date +%s)", "target_commitish": "master" }' 61 | @curl -X GET ${GITHUB_AUTH} ${GITHUB_API_URL}/releases/${GITHUB_RELEASE_ID}/assets | jq .[0].id | xargs -I '{id}' \ 62 | curl -X DELETE ${GITHUB_AUTH} ${GITHUB_API_URL}/releases/assets/{id} 63 | @curl -X POST ${GITHUB_AUTH} ${GITHUB_UPLOADS_URL}/releases/${GITHUB_RELEASE_ID}/assets?name=jylis --data-binary @"bin/${PKG}-release" -H "Content-Type: application/octet-stream" 64 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # `>jylis` [](https://circleci.com/gh/jemc/jylis) [](https://hub.docker.com/r/jemc/jylis) [](https://microbadger.com/images/jemc/jylis) 2 | 3 | Jylis is a distributed in-memory database for 4 | Conflict-free Replicated Data Types (CRDTs), 5 | built for speed, scalability, availability, and ease of use. 6 | 7 | Visit [the website](https://jemc.github.io/jylis/) for more information. 8 | -------------------------------------------------------------------------------- /bundle.json: -------------------------------------------------------------------------------- 1 | { 2 | "deps": [ 3 | { 4 | "type": "github", 5 | "repo": "ponylang/regex" 6 | }, 7 | { 8 | "type": "github", 9 | "repo": "ponylang/glob" 10 | }, 11 | { 12 | "type": "github", 13 | "repo": "jemc/pony-crdt" 14 | }, 15 | { 16 | "type": "github", 17 | "repo": "jemc/pony-inspect" 18 | }, 19 | { 20 | "type": "github", 21 | "repo": "jemc/pony-resp" 22 | }, 23 | { 24 | "type": "github", 25 | "repo": "jemc/pony-jason" 26 | } 27 | ] 28 | } -------------------------------------------------------------------------------- /docs/.gitignore: -------------------------------------------------------------------------------- 1 | .sass-cache 2 | _site 3 | -------------------------------------------------------------------------------- /docs/404.html: -------------------------------------------------------------------------------- 1 | --- 2 | layout: default 3 | --- 4 | 5 |
The page you are looking for cannot be found.
7 |
14 |
15 |
16 | Improve this page
17 |
18 |