unrepl

discussing specification of an edn-based repl and its implementations.
cgrand 2017-09-14T09:17:31.000081Z

Extensions, episode XXXXII

cgrand 2017-09-14T09:18:43.000003Z

who needs an extension mechanism when you send a blob?

cgrand 2017-09-14T09:22:55.000077Z

Well blob customization has some drawbacks: • more build fun • no “after-market” customization (short of re-upgrading) • won’t help in reuse of extensions across tools

cgrand 2017-09-14T09:25:56.000006Z

I’m currently leaning toward: • an operation allowing to register new operations, • a public unrepl/write var to allow tagged machine-readbale output • a load-on-first use helper

cgrand 2017-09-14T09:50:52.000024Z

so a typical scenario would be: 1/ send blob 2/ send extensions map 2bis/ start sideloader

cgrand 2017-09-14T10:20:23.000209Z

The benefits of extension over direct function calls are: 1/ lazy loading 2/ concurrent implementations (of the same extension) without having ns clashes

pesterhazy 2017-09-14T12:30:42.000142Z

Looks interesting

pesterhazy 2017-09-14T12:31:22.000044Z

What would be an example of an extension in your view? Just to make it more concrete

pesterhazy 2017-09-14T12:31:48.000139Z

I'll give this more thought when I'm back in Berlin at the end of next week

pesterhazy 2017-09-14T12:32:40.000174Z

I'd love to think through an end to end example of how this would be used in practice

cgrand 2017-09-14T12:47:49.000332Z

@pesterhazy basically extensions would be merged in the actions map

dominicm 2017-09-14T16:54:33.000045Z

@cgrand the load on first use helper is like the jvm classloader right?

cgrand 2017-09-14T17:57:10.000326Z

It would just be a macro that ensures the ns is required. That's all.

dominicm 2017-09-14T19:05:08.000423Z

It wouldn't ask you to supply the code for the op?

cgrand 2017-09-14T19:22:09.000316Z

Of course through the sideloader.

ghadi 2017-09-14T19:26:42.000148Z

would it be useful to produce a sequence diagram of the extensions & sideloader?

cgrand 2017-09-14T19:34:37.000402Z

Certainly. I'll draw it tomorrow.

cgrand 2017-09-14T19:38:35.000049Z

The sideloader is just a network classloader. So all missing classes or namespaces go through it.