Thanks Peter!


*José Valim*
www.plataformatec.com.br
Skype: jv.ptec
Founder and Director of R&D

On Mon, Jun 20, 2016 at 7:24 PM, Peter Hamilton <[email protected]>
wrote:

> The specific case I'm worried about is using inspect on a map and then
> using that result in something that is expected to be deterministic (like
> using it as a key in Redis).
>
>
> I did a quick search on Github for Elixir repositories using inspect as
> to_string. I found 4 cases where inspect was used outside of generating
> user readable strings.
>
> That one is basically assuming that inspect(<array of strings>) will
> output valid javascript. If a long integer were in that list it would cause
> a javascript error (I don't know if that's prevented elsewhere in the code
> or not):
>
> https://github.com/commentingon/DeepDive_PlugAndCowboy/blob/1ad46dad51543f39de8f3914ea5fc2f7a5624e9a/step_6/templates/rooms.html.ex#L61
>
> This one is probably fine because `plural` will be a string:
>
> https://github.com/phoenixframework/phoenix/blob/b9e4ae9f658108d1def9a32c27b06c318ae67a98/priv/templates/phoenix.gen.model/model.ex#L4
>
> This one is interesting because it assumes that Code.eval(inspect(a)) ==
> a, which brings up the question of whether we allow underscores in integers
> in our code? (Yes we do, so that's good):
>
> https://github.com/mkremins/alembic/blob/2ae459201220b63af083d0d54325af93afa877f1/lib/config.ex#L47
>
> That one is over my head. I don't know enough about absinthe to quickly
> figure out whether it would be a problem.
>
> https://github.com/absinthe-graphql/absinthe/blob/43c27219d7f289baf4dae36b1a5596d0a2235072/lib/absinthe/type/built_ins/introspection.ex#L263
>
>
> I completely agree that it is a bad practice to use inspect as to_string
> in deterministic situations. However, this would be a really really painful
> bug if someone were to use inspect(map_with_long_int) as a key in a
> datastore. All unit tests would likely pass because any new entries would
> reflect the new behavior, but in production existing entries would be
> orphaned and cause a pretty big fire (rolling back would also be a
> nightmare because new entries would then be orphaned with the old code).
>
> I'm in favor of it being the new default, but messaging must be very clear
> here and disabling it should be part of that messaging.
>
> On Mon, Jun 20, 2016 at 9:50 AM José Valim <
> [email protected]> wrote:
>
>> > I'm nervous about existing inspect abuse as a hacky to_string.
>>
>> What do you mean?
>>
>> >  I could see someone using it and feeding the result into a hashing
>> function and this change would break such an implementation.
>>
>> Using something like this today is already broken in all kinds of ways
>> that I am not particularly concerned about it. :)
>>
>>
>>
>> *José Valim*
>> www.plataformatec.com.br
>> Skype: jv.ptec
>> Founder and Director of R&D
>>
>> On Mon, Jun 20, 2016 at 6:44 PM, Peter Hamilton <[email protected]
>> > wrote:
>>
>>> I'm nervous about existing inspect abuse as a hacky to_string. I could
>>> see someone using it and feeding the result into a hashing function and
>>> this change would break such an implementation.
>>>
>>> Being able to turn it off is probably sufficient. Would it make sense to
>>> turn it off at a global level?
>>>
>>> On Mon, Jun 20, 2016, 9:38 AM José Valim <
>>> [email protected]> wrote:
>>>
>>>> I like this proposal. I would even pick it is a default with an option
>>>> to turn it off. Does anyone else have feedback? :)
>>>>
>>>>
>>>>
>>>> *José Valim*
>>>> www.plataformatec.com.br
>>>> Skype: jv.ptec
>>>> Founder and Director of R&D
>>>>
>>>> On Tue, Jun 14, 2016 at 11:22 PM, Wojtek Mach <[email protected]>
>>>> wrote:
>>>>
>>>>> Hello everyone,
>>>>>
>>>>> It's very convenient to write down integer literals as e.g. 10_000_000 -
>>>>> much easier for humans to read.
>>>>>
>>>>> I was recently debugging some performance issues and I was working
>>>>> with this data in iex:
>>>>>
>>>>> [memory: 173978912, message_queue_len: 0, heap_size: 12834421,
>>>>>   total_heap_size: 21747214,
>>>>>   garbage_collection: [min_bin_vheap_size: 46422, min_heap_size: 233,
>>>>>    fullsweep_after: 65535, minor_gcs: 2]]
>>>>>
>>>>> This data would be *much* more readable to me with digit separators:
>>>>>
>>>>> [memory: 173_978_912, message_queue_len: 0, heap_size: 12_834_421,
>>>>>   total_heap_size: 21_747_214,
>>>>>   garbage_collection: [min_bin_vheap_size: 46_422, min_heap_size: 233,
>>>>>    fullsweep_after: 65_535, minor_gcs: 2]]
>>>>>
>>>>> It probably shouldn't be the default behavior for inspect/2, so I
>>>>> think this could only happen with one of: [pretty: true] , [pretty:
>>>>> :decimal]or perhaps something like [pretty_decimal: true].
>>>>>
>>>>> Regards,
>>>>> Wojtek
>>>>>
>>>>> --
>>>>> You received this message because you are subscribed to the Google
>>>>> Groups "elixir-lang-core" group.
>>>>> To unsubscribe from this group and stop receiving emails from it, send
>>>>> an email to [email protected].
>>>>> To view this discussion on the web visit
>>>>> https://groups.google.com/d/msgid/elixir-lang-core/93f9f36d-f3f3-41f7-856b-c1422cd40026%40googlegroups.com
>>>>> <https://groups.google.com/d/msgid/elixir-lang-core/93f9f36d-f3f3-41f7-856b-c1422cd40026%40googlegroups.com?utm_medium=email&utm_source=footer>
>>>>> .
>>>>> For more options, visit https://groups.google.com/d/optout.
>>>>>
>>>>
>>>> --
>>>> You received this message because you are subscribed to the Google
>>>> Groups "elixir-lang-core" group.
>>>> To unsubscribe from this group and stop receiving emails from it, send
>>>> an email to [email protected].
>>>> To view this discussion on the web visit
>>>> https://groups.google.com/d/msgid/elixir-lang-core/CAGnRm4%2Bd%2BsvetpUs_mC-VEnH3y9J6nFyXyuDQ1ixW6Wnu7zV%3DA%40mail.gmail.com
>>>> <https://groups.google.com/d/msgid/elixir-lang-core/CAGnRm4%2Bd%2BsvetpUs_mC-VEnH3y9J6nFyXyuDQ1ixW6Wnu7zV%3DA%40mail.gmail.com?utm_medium=email&utm_source=footer>
>>>> .
>>>> For more options, visit https://groups.google.com/d/optout.
>>>>
>>> --
>>> You received this message because you are subscribed to the Google
>>> Groups "elixir-lang-core" group.
>>> To unsubscribe from this group and stop receiving emails from it, send
>>> an email to [email protected].
>>>
>> To view this discussion on the web visit
>>> https://groups.google.com/d/msgid/elixir-lang-core/CAOMhEnwVRt-Xj2ajecHcdDPcZbCt5FU50v1Ng6gHH%2BAsD%2BjJag%40mail.gmail.com
>>> <https://groups.google.com/d/msgid/elixir-lang-core/CAOMhEnwVRt-Xj2ajecHcdDPcZbCt5FU50v1Ng6gHH%2BAsD%2BjJag%40mail.gmail.com?utm_medium=email&utm_source=footer>
>>> .
>>
>>
>>> For more options, visit https://groups.google.com/d/optout.
>>>
>> --
>> You received this message because you are subscribed to the Google Groups
>> "elixir-lang-core" group.
>> To unsubscribe from this group and stop receiving emails from it, send an
>> email to [email protected].
>> To view this discussion on the web visit
>> https://groups.google.com/d/msgid/elixir-lang-core/CAGnRm4%2BBfRJ792%2BPo7AZkkzcNgi4wLKh08YWJ6mfuKFeNAdzsQ%40mail.gmail.com
>> <https://groups.google.com/d/msgid/elixir-lang-core/CAGnRm4%2BBfRJ792%2BPo7AZkkzcNgi4wLKh08YWJ6mfuKFeNAdzsQ%40mail.gmail.com?utm_medium=email&utm_source=footer>
>> .
>> For more options, visit https://groups.google.com/d/optout.
>>
> --
> You received this message because you are subscribed to the Google Groups
> "elixir-lang-core" group.
> To unsubscribe from this group and stop receiving emails from it, send an
> email to [email protected].
> To view this discussion on the web visit
> https://groups.google.com/d/msgid/elixir-lang-core/CAOMhEnwqzfc3_53aQdcFrfwCKUTd2n%3DaF-CTy_e4bFGPHvxiBg%40mail.gmail.com
> <https://groups.google.com/d/msgid/elixir-lang-core/CAOMhEnwqzfc3_53aQdcFrfwCKUTd2n%3DaF-CTy_e4bFGPHvxiBg%40mail.gmail.com?utm_medium=email&utm_source=footer>
> .
> For more options, visit https://groups.google.com/d/optout.
>

-- 
You received this message because you are subscribed to the Google Groups 
"elixir-lang-core" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To view this discussion on the web visit 
https://groups.google.com/d/msgid/elixir-lang-core/CAGnRm4%2BySS%3D9909RX%2BTeXKjiFwpFK1_xhZarEKp6%3D7Z-6jBFtw%40mail.gmail.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to