yamlscript

delon 2023-12-29T16:06:46.709259Z

Congrats @ingy on all your hard work paying off!

delon 2023-12-29T16:07:25.828009Z

I'd be interested in working on the Ruby bindings

Ingy döt Net 2023-12-29T16:07:51.113659Z

Hi @delon!

Ingy döt Net 2023-12-29T16:08:31.219439Z

I think I saw you on linkedin, no?

delon 2023-12-29T16:08:38.211679Z

Yes

Ingy döt Net 2023-12-29T16:08:52.501149Z

Are you new to Clojurians slack?

delon 2023-12-29T16:09:04.845689Z

No we chatted a little earlier

Ingy döt Net 2023-12-29T16:09:13.159079Z

ah sorry 🙂

delon 2023-12-29T16:09:18.780819Z

No worries

Ingy döt Net 2023-12-29T16:09:39.576809Z

A ruby binding would be great

Ingy döt Net 2023-12-29T16:10:09.704349Z

Have you done FFI stuff in Ruby before?

delon 2023-12-29T16:10:14.463379Z

I forked the repo so we'll see what my time looks like. But, it seems like it should be pretty straight forward

delon 2023-12-29T16:10:29.951319Z

Yes, I've done a little

Ingy döt Net 2023-12-29T16:10:45.827859Z

yeah, look at the python, perl, raku and rust subdirs

delon 2023-12-29T16:10:52.732419Z

I think Fiddle is the tool we'll want to use in this case

Ingy döt Net 2023-12-29T16:10:57.832779Z

they all have working bindings

delon 2023-12-29T16:11:12.332079Z

Yeah, I was looking at the python implementation

Ingy döt Net 2023-12-29T16:12:01.981199Z

we just have one API call load ruby-obj = yamlscript.load(ys-string)

Ingy döt Net 2023-12-29T16:12:46.395449Z

the libyamlscript function returns json with either a data key or error key

delon 2023-12-29T16:13:04.509979Z

I see

Ingy döt Net 2023-12-29T16:13:28.169989Z

the error message is in error.cause throw that if you get it

😎 1
Ingy döt Net 2023-12-29T16:13:56.264539Z

throw an error is anything but data or error comes back

Ingy döt Net 2023-12-29T16:14:01.335609Z

super easy

delon 2023-12-29T16:14:18.500619Z

Yeah, that makes sense

Ingy döt Net 2023-12-29T16:15:12.780579Z

submit a PR to the https://github.com/yaml/yamlscript and I'll release it to rubygems.

👍 1
Ingy döt Net 2023-12-29T16:16:01.100349Z

when we make changes to YS we release the shared lib and all bindings at same time

😎 1
delon 2023-12-29T16:17:32.021019Z

I should have a little time over the weekend to dig into it

Ingy döt Net 2023-12-29T16:17:48.296269Z

oh... you need to bind to an exact libyamlscript.so.0.1.x version

Ingy döt Net 2023-12-29T16:19:51.822679Z

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.

👍 1
Ingy döt Net 2023-12-29T16:20:25.379749Z

ping me if you need anything! thanks again 🙂

delon 2023-12-29T16:21:12.184079Z

Will do. Thanks for a cool project!

Ingy döt Net 2023-12-29T16:21:29.370959Z

you bet! stoked that you like it

😎 1
delon 2023-12-29T16:23:18.313889Z

It's another layer of Clojure's Lispy subversion

Ingy döt Net 2023-12-29T16:48:15.449769Z

Since you know clojure well (I assume) my clojure code (under core libyamlscript and ys dirs) really needs review

Ingy döt Net 2023-12-29T16:48:42.446929Z

I'm just not that good at clojure yet

delon 2023-12-29T16:49:52.690659Z

No worries your perl magic and probably programming magic generally is much better than mine 🐫 😄

Ingy döt Net 2023-12-29T16:50:24.761209Z

any clojure related PRs welcome 🙂

delon 2023-12-29T16:51:35.435439Z

My Clojure experience is mostly around trying to implement more subversive versions of the system hence why lingy and yamlscript interest me. 🙂

Ingy döt Net 2023-12-29T16:52:01.305689Z

me too

delon 2023-12-29T16:52:27.214099Z

So we're the perfect pair 😂

✅ 1
delon 2023-12-29T16:52:52.553119Z

I've only worked on a few solo projects for pay

Ingy döt Net 2023-12-29T16:52:54.261869Z

well I'm interested in using Clojure to spread cool ideas from Clojure to 42 languages

delon 2023-12-29T16:53:06.638869Z

Yeah, I like that too

delon 2023-12-29T16:53:20.518809Z

I've long been a fan of Acmeism

delon 2023-12-29T16:53:48.034779Z

You got my imagination going with that a long time ago

Ingy döt Net 2023-12-29T16:54:04.150319Z

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...

delon 2023-12-29T16:54:17.294799Z

Got it

Ingy döt Net 2023-12-29T16:54:29.526189Z

huh, wow. no idea how people find out about acmeism

Ingy döt Net 2023-12-29T16:54:38.156979Z

that's quite a surprise!

😊 1
delon 2023-12-29T16:54:38.270389Z

I could see it as a cool devops tool, but I'm sure you've already thought of that

Ingy döt Net 2023-12-29T16:56:35.196949Z

lots of thoughts... I want to start trying out YS in places where YAML already is used but has struggles

Ingy döt Net 2023-12-29T16:58:17.291729Z

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.

delon 2023-12-29T16:58:33.357289Z

That'd be cool

delon 2023-12-29T16:59:59.671599Z

One other thought is maybe an Acmeist build tool, dependency management tool or both. We have too many of them in different languages.

Ingy döt Net 2023-12-29T17:00:47.236889Z

I'm working on that right now!

delon 2023-12-29T17:01:20.384249Z

Awesome!

Ingy döt Net 2023-12-29T17:02:07.033889Z

Soon you'll be able to write a new library in YS, compile to shared lib, and instantly ship bindings to 42 langs

delon 2023-12-29T17:02:20.198139Z

That's pretty cool

delon 2023-12-29T17:02:26.657559Z

No, that's really cool

Ingy döt Net 2023-12-29T17:02:43.567779Z

that's really acmeism realized

delon 2023-12-29T17:02:54.997609Z

Indeed

Ingy döt Net 2023-12-29T17:03:15.761349Z

and all thanks to clojure

Ingy döt Net 2023-12-29T17:03:19.921929Z

and friends

delon 2023-12-29T17:03:35.234609Z

Yeah

delon 2023-12-29T17:03:40.746279Z

That's pretty cool

delon 2023-12-29T17:04:11.634619Z

I'm gonna have to get going, but it's been cool chatting.

Ingy döt Net 2023-12-29T17:04:21.444329Z

I'll DM you

👍 1
delon 2023-12-29T16:21:37.414879Z

I was also curious, is Lingy on hold?

Ingy döt Net 2023-12-29T16:23:25.651779Z

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,

Ingy döt Net 2023-12-29T16:23:44.108279Z

and my whole vision flipped

delon 2023-12-29T16:23:46.422859Z

Got it

delon 2023-12-29T16:23:53.717669Z

That makes sense

delon 2023-12-29T16:24:17.550779Z

Graal is very cool tech

delon 2023-12-29T16:22:16.036199Z

Initially I was thinking of contributing there

Ingy döt Net 2023-12-29T16:34:26.861389Z

If you want to please do!

Ingy döt Net 2023-12-29T16:34:44.874489Z

There's really big work to be done in Lingy

Ingy döt Net 2023-12-29T16:35:06.361469Z

The Ruby binding to YS is a day's work likely

👍 1
Ingy döt Net 2023-12-29T16:36:17.711569Z

Lingy is meant to go past Perl. Python, Ruby etc

Ingy döt Net 2023-12-29T16:36:56.696559Z

One big milestone is getting all of clojure.core working

Ingy döt Net 2023-12-29T16:37:10.494239Z

Not sure how much you've looked at Lingy

delon 2023-12-29T16:37:47.480019Z

I looked a little

Ingy döt Net 2023-12-29T16:38:02.811789Z

but it literally pulls in chunks of the clojure.core source that it handles into lingy.core

Ingy döt Net 2023-12-29T16:38:15.625089Z

iirc

Ingy döt Net 2023-12-29T16:38:46.172299Z

and the Lingy::Reader can read all of clojure.core

😎 1
delon 2023-12-29T16:39:12.467549Z

I'd be interested in implementing the persistent data structures

Ingy döt Net 2023-12-29T16:39:26.592449Z

that's the BIG part

delon 2023-12-29T16:39:43.335819Z

I've done some of the simpler versions of them in PHP a while back

Ingy döt Net 2023-12-29T16:40:59.733389Z

one idea was to have a liblingy shared lib / virtual machine written in LuaJIT to do the HAMTs etc

😎 1
delon 2023-12-29T16:41:00.641479Z

The Ruby gem Hamster might be an interesting place to look for ideas on the Perl version

Ingy döt Net 2023-12-29T16:41:10.047369Z

cool!

Ingy döt Net 2023-12-29T16:42:20.103389Z

Lingy can interop with native perl objects. It boxes and unboxes as needed.

delon 2023-12-29T16:42:29.754769Z

Ok, cool

Ingy döt Net 2023-12-29T16:43:24.577119Z

the hard part with perl is that things like hashes and arrays don't have OO access. unless you use ties

delon 2023-12-29T16:44:08.885649Z

Do you mean as far as interop with the clojure side?

Ingy döt Net 2023-12-29T16:44:18.105329Z

when a language (like java) has an OO interface to everything it makes it easier to work with

Ingy döt Net 2023-12-29T16:44:38.618439Z

Yeah, I think so...

delon 2023-12-29T16:45:07.433149Z

I've had to deal with some of that in some of my Clojure implementation experiments in JavaScript

Ingy döt Net 2023-12-29T16:45:38.077619Z

You can make new instances from perl module classes and call methods. And call perl functions as well.

delon 2023-12-29T16:46:38.437149Z

Yeah

delon 2023-12-29T16:47:16.532629Z

That's how I got around it in JS. The core lib functions ensured the interface for the native types.

delon 2023-12-29T16:48:26.855389Z

In a lot of ways similar to how null in the Java implementation is a Seq even though it's not an object.

delon 2023-12-29T16:48:59.360949Z

The Seq interface can't ensure that but the seq function does.