Absinthe GraphQL will handle this fine. Arguably we shouldn't be using 
inspect there anyway, but these changes would be compatible regardless.

I'm also +1 about this change.

On Monday, June 20, 2016 at 3:56:43 PM UTC-4, José Valim wrote:
>
> 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] 
> <javascript:>> 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] 
>> <javascript:>> 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] 
>>> <javascript:>> 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] 
>>>> <javascript:>> 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] 
>>>>> <javascript:>> 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] <javascript:>.
>>>>>> 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] <javascript:>.
>>>>> 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] <javascript:>.
>>>>
>>> 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] <javascript:>.
>>> 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] <javascript:>.
>> 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/a3a8ae87-e2b5-4a88-9db8-513f5dd654af%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to