--- Day changed Sun Jan 19 2020 02:06 -!- jonatack [~jon@2a01:e0a:53c:a200:bb54:3be5:c3d0:9ce5] has joined ##miniscript 02:29 -!- jonatack [~jon@2a01:e0a:53c:a200:bb54:3be5:c3d0:9ce5] has quit [Ping timeout: 260 seconds] 03:09 -!- jonatack [~jon@134.19.179.187] has joined ##miniscript 07:14 < dr-orlovsky> @andytoshi: working on this. May I ask you, why you've used Arc for internal data structure of AST? Are these nodes subjected to be shared across different script instances? `Arc` is immutable, so wherever I try to do something like "tweak/apply some fn all public keys within miniscript with a given tweak factor" I have to create a new Miniscript AST and can't mutate it in-place 07:18 < sipa> not familiar with the rust code, but i suspect this is because of the compiler built on top, which creates many versions of expressions for the same policy, several of which who share the same subexpressions 07:20 < sipa> so if you'd use non-shareable types for the expressions this would lead to a memory explosion 07:20 < dr-orlovsky> sipa: oh, I see, thank you! 07:27 < sipa> of course, the compiler could use its own version of the miniscript ast type, but iirc that would be hard to do without huge code duplication 07:29 < sipa> (i say this without knowing rust, but i faced similar issues in the c++ version) 08:27 -!- jonatack [~jon@134.19.179.187] has quit [Ping timeout: 260 seconds] 09:26 -!- jonatack [~jon@2a01:e0a:53c:a200:bb54:3be5:c3d0:9ce5] has joined ##miniscript 09:37 < andytoshi> yes it's because of the compiler 09:38 < andytoshi> and yeah sipa you pretty much nailed the justification 09:38 < andytoshi> agree it's annoying that this prevents in-place mutation