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

Re: Proposal: initial type annotation in SV

Thread Previous | Thread Next
From:
demerphq
Date:
May 6, 2013 07:26
Subject:
Re: Proposal: initial type annotation in SV
Message ID:
CANgJU+Wrv3t=o1WNVLSho5XrQek2020WL6QNQqmSO=MNijLOvA@mail.gmail.com
On 6 May 2013 09:20, Sébastien Aperghis-Tramoni <maddingue@free.fr> 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 B.pm 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
data.

Yves




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

Thread Previous | Thread Next


nntp.perl.org: Perl Programming lists via nntp and http.
Comments to Ask Bjørn Hansen at ask@perl.org | Group listing | About