develooper Front page | perl.perl5.porters | Postings from May 2013

Re: Proposal: initial type annotation in SV

Thread Previous | Thread Next
May 6, 2013 07:26
Re: Proposal: initial type annotation in SV
Message ID:
On 6 May 2013 09:20, Sébastien Aperghis-Tramoni <> wrote:
> Steffen Mueller a écrit :
>> On 05/05/2013 11:45 PM, Sébastien Aperghis-Tramoni wrote:
>>> Now, did I miss something so blindingly obvious that I didn't see why
>>> it cannot work? is it silly?
>>> Thanks in advance for your comments and critics.
>>> In the mean time, I'll try to write a proof of concept.
>> I'm not sure that what you want to do is possible, but I'd sure love to see you try since it's been a sore spot wrt. Sereal[1] since the beginning.
>> Before you start prototyping, I would strongly suggest that you look up Chip's emails and branches/patches such as "chip/magicflags7". He'd worked towards the same goal: Being able to tell whatever type a scalar originated as. I even did some CPAN smoking then and there wasn't too much breakage.
> Oh, nice to know there was already some ongoing work.
> I already tried a naive approach because I apparently misread sv.h and thought that there were one or two free bits in the SV flags for IV/NV/PV. But experiments proved me wrong.
>> Chip, what was the ultimate reason why your changes never made it to blead?
>> Best regards,
>> Steffen
>> [1] Sereal could do quite a bit better than it does already. Right now, it defensively uses the biggest type a scalar currently holds. Which is not only space inefficient, but also occasionally wrong. I played with improved heuristics (erring on the side of safety but getting the most effective type where possible). Not only did that melt my brain, I ran out of time and ditched the branch. Patches welcome, for real.
> In my previous $jobs, I didn't use serialized data that much. But in my current job, there's a lot of serialized data, both JSON and XML-RPC. I've subclassed the serializers so they use to detect whether the SV is a IV, NV or PV, which is semantically more correct but still leave some corner cases uncovered.

Some of the corner cases? You mean *all* of the corner cases.  Doing
plain IV/UV/NV/PV is easy, as they are all "single form" types. Its
when they get upgraded to a higher svtype due to stringification or
numification they lose information required to properly serialize the


perl -Mre=debug -e "/just|another|perl|hacker/"

Thread Previous | Thread Next Perl Programming lists via nntp and http.
Comments to Ask Bjørn Hansen at | Group listing | About