Glide
Ark
Glide | Ark | |
---|---|---|
13 | 17 | |
2 | 557 | |
- | 3.6% | |
10.0 | 8.9 | |
over 1 year ago | 9 days ago | |
C++ | C++ | |
GNU General Public License v3.0 only | Mozilla Public License 2.0 |
Stars - the number of stars that a project has on GitHub. Growth - month over month growth in stars.
Activity is a relative number indicating how actively a project is being developed. Recent commits have higher weight than older ones.
For example, an activity of 9.0 indicates that a project is amongst the top 10% of the most actively developed projects that we are tracking.
Glide
-
How do you deal with lack of motivation?
I've added the code to the repo: https://github.com/dibsonthis/Glide/blob/main/imports/csv.gl
-
Glide - code now on Github
So for the past few months, I've been working on my data transformation language Glide. It started off as a simple toy PL that aimed to do some basic data transformation through piping. But as time went on, more and more features were added and the implementation became more complex.
-
Glide and its type system
I'm about 70% through writing Glide's new type system. Here are some examples:
-
List comprehension syntax
Hey all, I'd like to hear your opinions on Glide's list comprehension syntax:
-
My new type system caught a bug in my own standard library that would have ruined someone's day at runtime
I was hesitant to spend time building a proper type system originally, but I'm so glad I decided to do it. Having a typing stage in the pipeline has made my language (Glide) feel so much closer to a real language than the toy language I've always seen it as.
-
Implemented a compile time type system for Glide
Just finished the core implementation of a compile time type system for my language Glide.
-
Glide + wiki documentation
Link to documentation: https://github.com/dibsonthis/Glide/wiki
-
Readability vs. Performance
I'm working on building out the csv module in my language Glide and I'm at a bit of a crossroads. I initially envisioned the csv module to build a list of objects out of the data and the user manipulates those objects directly and then can serialise them back to csv. However, I've also come up with a different solution that doesn't involve objects, but only flat lists.
-
Best use of time: Building a Static type system in the compiler or a Dynamic type system in the language?
My language Glide is currently dynamically typed, however I've been trying to build some sort of type system for it. I chose to go with a dynamic type system because I felt it would be a lot easier to get going, and can be written directly in the language. But I've also noticed that I could be using this time and effort on implementing a "real" static type system in the compiler itself. But I'm unsure which direction I want to take.
-
How do you determine what goes into the standard library?
So I've noticed the more code I write in my language (Glide), the bigger my "standard library" gets. And by standard library, I mean a bunch of different files that contain really handy functions, i.e list functions like map, filter, reduce and string functions like to_chars, split etc.
Ark
-
Dealing with documentation
This results in two websites: - the documentation of the language on the "main" website, https://arkscript-lang.dev ; - the technical documentation (+ modules) on doxygen: https://arkscript-lang.dev/impl/
-
November 2022 monthly "What are you working on?" thread
1: https://github.com/ArkScript-lang/Ark 2: https://github.com/AFLplusplus/AFLplusplus
-
Making your project available through Homebrew
# Documentation: https://docs.brew.sh/Formula-Cookbook # https://rubydoc.brew.sh/Formula # PLEASE REMOVE ALL GENERATED COMMENTS BEFORE SUBMITTING YOUR PULL REQUEST! class ArkscriptAT330 < Formula desc "" homepage "" license "" head "https://github.com/ArkScript-lang/Ark.git" depends_on "cmake" => :build def install # ENV.deparallelize # if your formula fails when building in parallel system "cmake", "-S", ".", "-B", "build", *std_cmake_args system "cmake", "--build", "build" system "cmake", "--install", "build" end test do # `test do` will create, run in and delete a temporary directory. # # This test will fail and we won't accept that! For Homebrew/homebrew-core # this will need to be a test that verifies the functionality of the # software. Run the test with `brew test [email protected]`. Options passed # to `brew install` such as `--HEAD` also need to be provided to `brew test`. # # The installed folder is not in the path, so use the entire path to any # executables being tested: `system "#{bin}/program", "do", "something"`. system "false" end end
-
Understanding tail-call optimization
Lately, I've been working on optimizations for my language, ArkScript, and finally take some time to add tail-call optimization to my compiler.
-
Solving the stack problem
A nice and bigger example would be this one, a snake game: https://github.com/ArkScript-lang/Ark/blob/dev/examples/games/snake/snake.ark
- Contributed to some OSSs with pull-requests in this year too.
-
July 2021 monthly "What are you working on?" thread
Still working on ArkScript after releasing the 3.1.0, improving the standard library, adding modules, and working on performance improvements + adding parallel builtins soon!
- ArkScript 3.1.0 is here with macro and UTF-8 support
- ArkScript 3.1.0 is here with macros and UTF-8
-
GitHub actions are awesome
Until recently, when we wanted to create new releases for ArkScript, we had to build the language on all the system we support (currently Windows and Linux), build the modules (http, console, random, etc), test everything on each operating system, and then package the needed files and directory in ZIPs. We had to go to GitHub, create a new release, add the correct tag (and not mix it with the title as they are different things!), grep the latest changelog, and add our artifacts.
What are some alternatives?
jevkalk - A Jevko-based interpreter.
Peregrine - A blazing fast language for the blazing fast world(WIP)
motorway-lang - An esoteric programming language based on the British motorway network
hera - Hera: Ewasm virtual machine conforming to the EVMC API
parsejevko.js - [DEPRECATED] Deprecated in favor of https://github.com/jevko/jevko.js
fake-gcs-server - Google Cloud Storage emulator & testing library.
Cwerg - The best C-like language that can be implemented in 10kLOC.
Feral - Feral programming language reference implementation
ocaml - The core OCaml system: compilers, runtime system, base libraries
boring-lang - A very boring programming language
utena
zhetapi - A C++ ML and numerical analysis API, with an accompanying scripting language.