Source
To run iogii save the "1 File" from the latest release (below) as iogii and chmod +x it, then run iogii <filename.iog> (it is standalone ruby code with no dependencies).
You can also download "All Source" and run cd src; ruby main.rb <filename.iog>. This includes the original source files, all tests, and site generation code.
The current version is compatible with Ruby 2.7.2 - 3.1.2 (and likely beyond in both directions). And if you use Haskell code generation, it is compatible with GHC 8.10.7.
I am not using github due to them not respecting licenses by training LLMs on code without crediting said code when used in a response.
Planned Features
- Allow the rotation trick to be used inside nested functions to eliminate the need for
!. This could allow functions to be more concise and obsolete[]/ etc. too. I do not yet have an intuition for how this will work with implicit args and>, it will be extremely difficult to get right.
Releases
0.2 (Alpha) - Dec 11, 2024
Changes:
- Clarified
reshapebehavior, explained in new Ops page. - Fix bug with
,following token that was split up, e.g.nJ, - Add Graphviz visualizations to online interpreter.
- Support Haskell code generation (~50x speedup + no stack overflow limit)
- Remove
pp shownow prints like Haskell would- Rename
nuketodel - Remove regex
match - Add
charClassop - Output chars mod 256 rather than error if out of range
expanddoes not return the initial value now (thanks UnrelatedString for the suggestion).- Change
transposeto insert default values so that truncation is never needed. - Support input from command line args after
--.
0.1 (Alpha) - Nov 7, 2024
Changes:
- Add more string ops
charRange ^uppercase Ulowercase Lparts P(split on whitespace)chr |,(convert int to char)match +to match regexes.
- Allow unterminated strings.
- Allow implicit args.
- Add auto parsing of input.
@also sets input if none present.- Make
pow ^work more consistently for negative numbers and not overflow for large numbers. - Remove ops:
nfoldProd p,and y - Add ops:
pad p,index .,get g - Rename ops:
chunkWhen.→\transpose\→p(pivot). So that it can be unvectorized and also provide nice overload forprod.digits\→p(it's like transposing a string)lastz→llenl→q(quantity)equalq→=assignment=→~generateg→K(kCopy), no longer genericif→y(yes no)sum_→#negate / read~→_pow10Z→H(hyper)sqrtH→u(unsquare)toBase#→D(digitize)fromBase#,→WbaseFrom(base was). Note that arg order is also swapped - necessary to have vectorized overload.
0.0 (Alpha) - Oct 29, 2024
Initial release. Uses Ruby 3.1.2.
SHA256 sum of 1 File: d325338fab8c0d44a94a2dd85c9deda61d32fe20521e4c125c99d142e37e5a5c