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.
