Giter Club home page Giter Club logo

jazz's Introduction

Jazz is a language that makes programming embedded, web, apps etc easier using a simple scripting language with the tools you need built-in by the Rust and Lua communities. (It's currently being renamed from Torchbear.)

Blessed Rust Modules

As you wish to solve more use cases with your programs, you can access Torchbear's functions, which are described below and viewable in the bindings' documentation (generated using our code map app).

Environment

  • Actix actor-model concurrency framework (see RFC 613 for more info)
  • Actix Lua safe Lua scripting environment for Actix
  • rlua* Lua 5.3.5 (also with tools for traceback error messages, logs, and performance profiling)
  • Actix Web HTTP/1.x and HTTP/2.0 web servers and clients

System

Crypto

  • Libsodium* cryptographic signing and verifying, and encrypting and decrypting
  • Blake2 cryptographic hash function
  • Checksumdir deterministic directory hashing

Number

  • libm* mathematical functions, like exponential, power, trigonometric, hyperbolic, floating-point manipulation, classification

String

  • NanoID secure, URL-friendly, unique string ID generator
  • UUID-rs UUID generation and verification
  • ulid Universally Unique Lexicographically Sortable Identifier
  • Case conversions to CamelCase, snake_case, kebab-case, SHOUTY_SNAKE_CASE, mixedCase, and Title Case
  • regex matching and replacing
  • MIME type guessing

Structured Text

  • SCL safe serializing/deserializing
  • YAML serializing and deserializing using serde
  • JSON serializing and deserializing using serde
  • Tantivy searching, indexing, schema building, and document adding, updating, and deleting

Unstructured Text

Archive

  • Zip file decompression
  • Tar file decompression
  • xz lzma file compression and decompression

Diff

  • Diff generating diffs using strings and text files
  • Patch applies diffs to strings and text files
  • Split Diff breaks individual diffs into multiple diffs, per file
  • List Diff lists files affected by a diff
  • Interdiff**
  • Git* cloning, pulling, repo creation, staging, committing, and log access (builtin, no git dependency)

Note* (asterisk) means safely wraps a C library

Note** (two asterisks) means help wanted

Blessed Libraries and Frameworks

  • Torchbear Libs · libraries for logging, terminal coloring, event triggering, functional programming, graph data processing, argument parsing (todo), and file patching (todo)
  • Torchbear Libs Dev · a library for inspecting tables
  • ContentDB · a document-oriented, file-based database
  • Lighttouch · a simple, event-driven, rule-based, dynamically-loaded, functional, parameter-populated, configurable, version-controlled application framework

Get Started

Jazz comes as a single executable (eg. as a binary .exe file) which makes it easy to install and easy to run apps. It also comes with a package manager, called Machu Picchu, which helps you to download more apps.

Install

To install Jazz on Android or Windows, run this command using your terminal (what's a terminal?):

 curl https://git.io/fpcV6 -sSfL | bash

MacOS and Linux users will need admin permissions to run:

 curl https://git.io/fpcV6 -sSfL | sudo bash

The installer automatically gets the latest version (which is also available on Torchbear's GitHub releases page) and puts it in a convenient file location for you. To do this, it downloads the latest zip file for your operating system and hardware architecture, then it unzips the executable to a place where it will run as a command. You can do that manually or differently, as you like.

What is a terminal? (command prompt)

If you haven't heard of a terminal before, here's a 1 min intro to what is a terminal window. This works on Android, Windows, MacOS, and Linux devices very similarly, but you might need one other tool first:

Update

To update, run torchup.

Uninstall

To uninstall, run torchup --uninstall.

Development

Hello World App

  1. put this in init.lua:
#!/usr/bin/env speakeasy

print("hello from Torchbear")
  1. make it executable with chmod +x init.lua

  2. then run it with ./init.lua

Note: Machu Picchu also works as a dependency manager, making deploying and developing component-oriented software easy. Check how other projects use it until more documentation is available. Also can start finding some useful library scripts for your programs in our Lunar Transit account.

Rust Development

You can compile from source by installing Cargo (Rust's package manager) and installing torchbear using Cargo:

cargo install torchbear

Compiling from this repository also works similarly:

git clone https://github.com/foundpatterns/torchbear
cd torchbear
cargo build --release

Note: You will also need a C compiler, eg on Debian-based Linux distros sudo apt install build-essential. Compilation will probably take several minutes depending on your machine and your network speed. The binary will end up in ./target/release/torchbear.

App Stores

Contributors wanted

Torchbear extends Rust's growing library ecosystem. Developers and users alike are welcomed to participate in Torchbear's issue queue for small changes and high impact contributions. Everyone is invited.

Even moderately experienced Rust developers can work on adding bindings or adding other functions. There are many examples to learn from in the bindings directory. Through this process, you'll learn a Rust library's API inside and out, and you'll put another tool into the hands of a thriving userbase.

Experienced Rust developers' reviews would be greatly appreciated, eg those familiar with low-level library idioms and especially those well-versed in Actix. Much of the power functionality built-in to Torchbear comes from libraries like Actix, Actix-Web, Actix-Lua, rlua, and many more well-picked ones which need thorough review and careful analysis to make a good programming environment.

Users who who want to add a 'review' or 'story' about your use cases, simply add this "issue label" (type/review) or (type/story). Everyone is welcomed to do so, and this will help users and developers understand Torchbear from eachother's points of view. Developers who want to post other feedback and analysis will receive a hearty thank you.

Community

Eveyone interested in learning and solving problems with programming and open-source tools in general is welcomed to come to Found Patterns Studio's Discord Server to meet fellow engineers and to work together on team-driven projects, like Torchbear. If you haven't heard of Discord before, you could start with these videos, Discord For Dummies: Basic Use and Set up Instructions for Discord App and How To Setup And Use Discord - Basic Overview Of Features and Tools. We use it to help eachother use and build Torchbear and many other projects. It's a safe and friendly place to get things done.

Supporters

As an open source project, continued development depends on support from people like you. To see current and past supporters, visit our supporters.md file.

To add your support to this project, as it is currently lead, and to join that list, visit Mitchell's contact and support channel for more info.

Sponsors

To sponsor this project and put your logo here, visit Mitchell's GitHub sponsors page.

Found Patterns Museum & Exhibit Sponsors

This project is currently in early development for a future exhibit in Found Patterns Museum, called User Handed Programming. If you would like to help us realize it, make a donation to Found Patterns Museum.

Thank you · Namaste · Aloha 👋

jazz's People

Contributors

aleksanderwlodarczyk avatar arnaz87 avatar dariusc93 avatar hedgar2017 avatar hummer12007 avatar jabzuda avatar juchiast avatar michaelr524 avatar naturallymitchell avatar octplane avatar sh-zam avatar sineemore avatar voidxnull avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar

jazz's Issues

update cargo.toml

  • poga's actix-lua 0.5
  • maidsafe's libsodium supposedly fixed openssl issue (with an http client that has 0 stars..)

Remove prelude and application from settings

Currently the lua_prelude and application settings tell torchbear additional paths from where to include lua packages, but setting additional module paths should be up to the applications, and torchbear should only use a single init file

logging improvements

  • remove actix-something noise in debug and trace mode
  • remove starting space in lua logs

To select the logging level, start torchbear with the --log option with the most verbose level acceptable, between error, warn, info, debug and trace. Default is info, it's used if no log option is specified.

actix-net (streams) bindings

expose client_request future in lua

Currently we are waiting by default for the response

local response = client_request.send("google.com")

exposing futures would look like this

local future = client_request.send("google.com")
-- we can do anything we want after sending the request
-- even send it and forget it
-- and then we can get the response
local response = future.wait()

split keypair in crypto bindings

Currently the crypto bindings have only one special type: keypair, of which a value is returned by crypto.box.new_keypair and crypto.sign.new_keypair, because that's the only special type it's the one with all the important operations, so to sign currently both the private and public key are needed but the public is not necessary to sign.

Change it so that private and public keys are different types with their own operations.

Android release

I saw an Apache app that had a simple GUI for starting and stopping. It could possibly have clap options.

remove select.rs bindings

tera build warnings

warning: use of deprecated item 'tera::Context::add': Use `insert` instead to keep consistency with std collections

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.