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
reshape
behavior, 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
show
now prints like Haskell would- Rename
nuke
todel
- Remove regex
match
- Add
charClass
op - Output chars mod 256 rather than error if out of range
expand
does not return the initial value now (thanks UnrelatedString for the suggestion).- Change
transpose
to 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 U
lowercase L
parts 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)last
z
→l
len
l
→q
(quantity)equal
q
→=
assignment
=
→~
generate
g
→K
(kCopy), no longer genericif
→y
(yes no)sum
_
→#
negate / read
~
→_
pow10
Z
→H
(hyper)sqrt
H
→u
(unsquare)toBase
#
→D
(digitize)fromBase
#,
→W
baseFrom
(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