This page is not created by, affiliated with, or supported by Slack Technologies, Inc.
2023-12-29
Channels
- # aleph (1)
- # announcements (5)
- # beginners (21)
- # cider (4)
- # clojars (1)
- # clojure (39)
- # clojure-europe (5)
- # clojure-norway (133)
- # clojurescript (5)
- # datomic (27)
- # exercism (2)
- # gratitude (4)
- # humbleui (21)
- # hyperfiddle (10)
- # integrant (16)
- # introduce-yourself (1)
- # lsp (17)
- # matrix (1)
- # nbb (10)
- # overtone (5)
- # polylith (21)
- # re-frame (6)
- # squint (3)
- # tools-deps (22)
- # yamlscript (102)
I think I saw you on linkedin, no?
Are you new to Clojurians slack?
ah sorry 🙂
A ruby binding would be great
Have you done FFI stuff in Ruby before?
I forked the repo so we'll see what my time looks like. But, it seems like it should be pretty straight forward
yeah, look at the python, perl, raku and rust subdirs
they all have working bindings
we just have one API call load
ruby-obj = yamlscript.load(ys-string)
the libyamlscript function returns json with either a data
key or error
key
throw an error is anything but data or error comes back
super easy
submit a PR to the https://github.com/yaml/yamlscript and I'll release it to rubygems.
when we make changes to YS we release the shared lib and all bindings at same time
oh... you need to bind to an exact libyamlscript.so.0.1.x version
put a line like
YAMLSCRIPT_VERSION = '0.1.42'
in the code.
and then use that variable to load the lib.
the release system will update the version for each release that way.ping me if you need anything! thanks again 🙂
Since you know clojure well (I assume) my clojure code (under core
libyamlscript
and ys
dirs) really needs review
I'm just not that good at clojure yet
No worries your perl magic and probably programming magic generally is much better than mine 🐫 😄
any clojure related PRs welcome 🙂
My Clojure experience is mostly around trying to implement more subversive versions of the system hence why lingy and yamlscript interest me. 🙂
me too
well I'm interested in using Clojure to spread cool ideas from Clojure to 42 languages
well I'm also trying to figure out a business around YAML and YS. YAML LLC is my company. But haven't really started anything yet...
huh, wow. no idea how people find out about acmeism
lots of thoughts... I want to start trying out YS in places where YAML already is used but has struggles
A lot of Clojurians like to see everything as Clojure. I don't, but I think Clojure is gold. And my hope is that YS ushers in a whole new crowd to Clojure.
One other thought is maybe an Acmeist build tool, dependency management tool or both. We have too many of them in different languages.
I'm working on that right now!
Soon you'll be able to write a new library in YS, compile to shared lib, and instantly ship bindings to 42 langs
that's really acmeism realized
and all thanks to clojure
and friends
It is on hold atm. When I gave the talk on Lingy and YAMLScript in July, Lingy was the big deal and YS was a cherry on top. But then I got found by here, and learned about graal and sci etc,
and my whole vision flipped
If you want to please do!
There's really big work to be done in Lingy
Lingy is meant to go past Perl. Python, Ruby etc
One big milestone is getting all of clojure.core
working
Not sure how much you've looked at Lingy
but it literally pulls in chunks of the clojure.core
source that it handles into lingy.core
that's the BIG part
one idea was to have a liblingy shared lib / virtual machine written in LuaJIT to do the HAMTs etc
The Ruby gem Hamster might be an interesting place to look for ideas on the Perl version
cool!
Lingy can interop with native perl objects. It boxes and unboxes as needed.
the hard part with perl is that things like hashes and arrays don't have OO access. unless you use tie
s
when a language (like java) has an OO interface to everything it makes it easier to work with
Yeah, I think so...
I've had to deal with some of that in some of my Clojure implementation experiments in JavaScript
You can make new instances from perl module classes and call methods. And call perl functions as well.
That's how I got around it in JS. The core lib functions ensured the interface for the native types.