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.
