{"push_id":567905539,"size":20,"distinct_size":0,"ref":"refs/heads/dev","head":"9f6f29e5c58ab9e39a4de3142c9670c925734130","before":"9a393fb5237b637cc4cfdb79443a1517743eadd8","commits":[{"sha":"f667931e2905797ffab63e224e56eaf07f77178a","author":{"email":"8a2957e0063f2abf61bd145b6236a74a3708ac54@erlang.org","name":"Björn Gustavsson"},"message":"Make the syntax for map pairs readable\n\nUse the same syntax for map pairs in Core Erlang code as in the\nErlang Code. This Erlang code:\n\n  M#{x:=42,y=>1}\n\nwill look like this in Core Erlang:\n\n  ~{'x':=42,'y'=>1|M}~","distinct":false,"url":"https://api.github.com/repos/norton/otp/commits/f667931e2905797ffab63e224e56eaf07f77178a"},{"sha":"8c0bebb66ba01b174e6482cd81949eaf08748bcd","author":{"email":"8a2957e0063f2abf61bd145b6236a74a3708ac54@erlang.org","name":"Björn Gustavsson"},"message":"trace_bif_SUITE: Ensure that a call to time/0 is not removed\n\nAssigning the result of a BIF call to a variable used to be\nsufficient to prevent the call from being optimized away. With\nthe more aggressive optimization that will be introduced in\na future commit it will not be sufficient.\n\nMatching the return value will prevent the compiler from doing\nthe optimization.","distinct":false,"url":"https://api.github.com/repos/norton/otp/commits/8c0bebb66ba01b174e6482cd81949eaf08748bcd"},{"sha":"8c3baeb1275c2e6a316d3b5203e0598906785cdb","author":{"email":"8a2957e0063f2abf61bd145b6236a74a3708ac54@erlang.org","name":"Björn Gustavsson"},"message":"Suppress warnings for expressions that are assigned to '_'\n\nIn c34ad2d5, the compiler learned to silence some warnings for\nexpressions that were explicitly assigned to the '_' variable,\nas in this example:\n\n  _ = list_to_integer(S),\n  ok\n\nThat commit intentionally only made it possible to silence warnings\nfor BIFs that could cause an exception. Warnings would still be\nproduced for:\n\n  _ = date(),\n  ok\n\nbecause date/0 can never fail and thus making the call completely\nuseless. The reasoning was that such warnings can always be\neliminated by eliminating the offending code.\n\nWhile that is true, there is the question about rules and their\nconsistency. It is surprising that '_' can be used to silence\nsome warnings, but has no effect on other warnings.\n\nTherefore, we will teach the compiler to silence warnings for\nthe following constructs:\n\n  * Calls to safe BIFs such as date/0\n  * Expressions that will cause an exception such as 'X/0'\n  * Terms that are built but not used, such as '{x,X}'","distinct":false,"url":"https://api.github.com/repos/norton/otp/commits/8c3baeb1275c2e6a316d3b5203e0598906785cdb"},{"sha":"cd1eaf0116190ab72f3a792b74be99eda5dd31eb","author":{"email":"8a2957e0063f2abf61bd145b6236a74a3708ac54@erlang.org","name":"Björn Gustavsson"},"message":"sys_core_fold: Optimize let statements more aggressively\n\nI originally decided that in 'value' context, rewriting a let statement\nwhere the variables were not in the body to a sequence was not worth\nit, because the variables would be unused in only one let in a\nthousand lets (roughly).\n\nI have reconsidered.\n\nThe main reason is that if we do the rewrite, core_lib:is_var_used/2\nwill be used much more frequently, which will help us to find bugs\nin it sooner.\n\nAnother reason is that the way letify/2 is currently implemented\nwith its own calls to core_lib:is_var_used/2 is only safe as long\nas all the bindings are independent of each other. We could make\nletify/2 smarter, but if we introduce this new optimization there\nis no need.\n\nMeasuring compilation speed, I have not seen any significant slowdown.\nIt seems that although core_lib:is_var_used/2 is called much more\nfrequently, most calls will be fast because is_var_used/2 will quickly\nfind a use of the variable.\n\nAlso add a test case to cover a line opt_guard_try/1 that was\nno longer covered.","distinct":false,"url":"https://api.github.com/repos/norton/otp/commits/cd1eaf0116190ab72f3a792b74be99eda5dd31eb"},{"sha":"ead8a497f382d6b82c98721d504a5ccd40889b1c","author":{"email":"9d9370ad79803576bcf30dad1a4429fecb8df076@gmail.com","name":"Kirilll Zaborsky"},"message":"inets: parse correctly 'Set-Cookie' header with empty value\n\nhttpc_cookie should parse cookies with empty values\nand no attributes set in the 'Set-Cookie' headers.","distinct":false,"url":"https://api.github.com/repos/norton/otp/commits/ead8a497f382d6b82c98721d504a5ccd40889b1c"},{"sha":"4babd738633953a09ce3314ed89d0933063b4ef7","author":{"email":"8a2957e0063f2abf61bd145b6236a74a3708ac54@erlang.org","name":"Björn Gustavsson"},"message":"Teach case_opt/3 to avoid unnecessary building\n\nGiven this code:\n\n  f(S) ->\n    F0 = F1 = {S,S},\n    [F0,F1].\n\ncase_opt/3 would \"optimize\" it like this:\n\n  f(S) ->\n    F1 = {S,S},\n    F0 = {S,S},\n    [F0,F1].\n\nSimilarly, this code:\n\n  g({a,_,_}=T) ->\n    {b,\n     [_,_] = [T,none],\n     x}.\n\nwould be rewritten to:\n\n  g({a,Tmp1,Tmp2}=T) ->\n    Tmp3 = {a,Tmp1,Tmp2},\n    {b,\n     [Tmp3,none],\n     x}.\n\nwhere the tuple is rebuilt instead of using the T variable.\n\nRewrite case_opt/3 to be more careful while optimizing.","distinct":false,"url":"https://api.github.com/repos/norton/otp/commits/4babd738633953a09ce3314ed89d0933063b4ef7"},{"sha":"aaa0536429ac827f3651bccd938f7d891f448b42","author":{"email":"a076b11c2cc63ccdc903dbe182e1eecc3cbbc094@erlang.org","name":"Henrik Nord"},"message":"fix faulty merge","distinct":false,"url":"https://api.github.com/repos/norton/otp/commits/aaa0536429ac827f3651bccd938f7d891f448b42"},{"sha":"c1e8eefea2822145100ce05453e8054ea29f4672","author":{"email":"a076b11c2cc63ccdc903dbe182e1eecc3cbbc094@erlang.org","name":"Henrik Nord"},"message":"Merge branch 'henrik/fix-master'\n\n* henrik/fix-master:\n  fix faulty merge","distinct":false,"url":"https://api.github.com/repos/norton/otp/commits/c1e8eefea2822145100ce05453e8054ea29f4672"},{"sha":"f79afb23fbd469bed88616784f757707f9985a06","author":{"email":"8a2957e0063f2abf61bd145b6236a74a3708ac54@erlang.org","name":"Björn Gustavsson"},"message":"Correct unsafe optimization of '==' and '/='\n\nSince '=:=' is cheaper than '==', the compiler tries to replace\n'==' with '=:=' if the result of comparison will be the same.\n\nAs an example:\n\n  V == {a,b}\n\ncan be rewritten to:\n\n  V =:= {a,b}\n\nsince the literal on the right side contains no numeric values\nthat '==' would compare differently to '=:='.\n\nWith the introduction of maps, we will need to take them into\naccount. Since the comparison of maps is planned to change in 18.0,\nwe will be very conservative and only do the optimization if\nboth keys and values are non-numeric.","distinct":false,"url":"https://api.github.com/repos/norton/otp/commits/f79afb23fbd469bed88616784f757707f9985a06"},{"sha":"cb44555c44725afea836ed7b255c8bd45d8eec58","author":{"email":"8a2957e0063f2abf61bd145b6236a74a3708ac54@erlang.org","name":"Björn Gustavsson"},"message":"Merge branch 'bjorn/compiler/maps-comparison/OTP-12456' into maint\n\n* bjorn/compiler/maps-comparison/OTP-12456:\n  Correct unsafe optimization of '==' and '/='","distinct":false,"url":"https://api.github.com/repos/norton/otp/commits/cb44555c44725afea836ed7b255c8bd45d8eec58"},{"sha":"f3a8efa2e4fa6f3f64ee38939103bfd55e78bc51","author":{"email":"8a2957e0063f2abf61bd145b6236a74a3708ac54@erlang.org","name":"Björn Gustavsson"},"message":"Update primary bootstrap","distinct":false,"url":"https://api.github.com/repos/norton/otp/commits/f3a8efa2e4fa6f3f64ee38939103bfd55e78bc51"},{"sha":"431c196486ebc3d6cc684419d8594eb26deaf846","author":{"email":"8a2957e0063f2abf61bd145b6236a74a3708ac54@erlang.org","name":"Björn Gustavsson"},"message":"Merge branch 'maint'\n\n* maint:\n  Update primary bootstrap\n  Correct unsafe optimization of '==' and '/='\n\nConflicts:\n\tbootstrap/lib/compiler/ebin/sys_core_fold.beam","distinct":false,"url":"https://api.github.com/repos/norton/otp/commits/431c196486ebc3d6cc684419d8594eb26deaf846"},{"sha":"9d99c5fde589a98af4b173f816f648716b3127b8","author":{"email":"8a2957e0063f2abf61bd145b6236a74a3708ac54@erlang.org","name":"Björn Gustavsson"},"message":"Merge branch 'bjorn/compiler/map-core-syntax/OTP-12454'\n\n* bjorn/compiler/map-core-syntax/OTP-12454:\n  Make the syntax for map pairs readable","distinct":false,"url":"https://api.github.com/repos/norton/otp/commits/9d99c5fde589a98af4b173f816f648716b3127b8"},{"sha":"ca8b78e997aef12f6e6c883c68db2ffef5986ae5","author":{"email":"8a2957e0063f2abf61bd145b6236a74a3708ac54@erlang.org","name":"Björn Gustavsson"},"message":"Merge branch 'bjorn/compiler/dup-bug-fix/OTP-12453'\n\n* bjorn/compiler/dup-bug-fix/OTP-12453:\n  Teach case_opt/3 to avoid unnecessary building\n  sys_core_fold: Optimize let statements more aggressively\n  Suppress warnings for expressions that are assigned to '_'\n  trace_bif_SUITE: Ensure that a call to time/0 is not removed","distinct":false,"url":"https://api.github.com/repos/norton/otp/commits/ca8b78e997aef12f6e6c883c68db2ffef5986ae5"},{"sha":"8af91b0fed1bebafb7096782a3cc0b02a2d9b62f","author":{"email":"8a2957e0063f2abf61bd145b6236a74a3708ac54@erlang.org","name":"Björn Gustavsson"},"message":"Update primary bootstrap","distinct":false,"url":"https://api.github.com/repos/norton/otp/commits/8af91b0fed1bebafb7096782a3cc0b02a2d9b62f"},{"sha":"280399ccfc3c4bd0e9c87c22bfc13045aae2bb76","author":{"email":"ba3881205c5805402acf70e529c21de2872369dd@erlang.org","name":"Zandra Hird"},"message":"Merge branch 'scrapinghub/httpc_set_cookie_with_empty_values' into maint\n\n* scrapinghub/httpc_set_cookie_with_empty_values:\n  inets: parse correctly 'Set-Cookie' header with empty value\n\nOTP-12455","distinct":false,"url":"https://api.github.com/repos/norton/otp/commits/280399ccfc3c4bd0e9c87c22bfc13045aae2bb76"},{"sha":"ae5d5db20fe1d9b4cae2a19717ef010be1b8097f","author":{"email":"ba3881205c5805402acf70e529c21de2872369dd@erlang.org","name":"Zandra Hird"},"message":"Merge branch 'maint'","distinct":false,"url":"https://api.github.com/repos/norton/otp/commits/ae5d5db20fe1d9b4cae2a19717ef010be1b8097f"},{"sha":"ba3bd714f1c09e8bd8db0253ac18021cfabee28f","author":{"email":"8800578b51f022c8d8adb9606a8b3db4fedbdac6@erlang.org","name":"Hans Nilsson"},"message":"Fix ssh:connect erroneus error msg at timeout","distinct":false,"url":"https://api.github.com/repos/norton/otp/commits/ba3bd714f1c09e8bd8db0253ac18021cfabee28f"},{"sha":"6cdbe4b9a3bb89d02f4d4f5cd513615d19191b5d","author":{"email":"8800578b51f022c8d8adb9606a8b3db4fedbdac6@erlang.org","name":"Hans Nilsson"},"message":"Merge branch 'hans/ssh/error_timeout/OTP-12369' into maint\n\n* hans/ssh/error_timeout/OTP-12369:\n  Fix ssh:connect erroneus error msg at timeout","distinct":false,"url":"https://api.github.com/repos/norton/otp/commits/6cdbe4b9a3bb89d02f4d4f5cd513615d19191b5d"},{"sha":"9f6f29e5c58ab9e39a4de3142c9670c925734130","author":{"email":"8800578b51f022c8d8adb9606a8b3db4fedbdac6@erlang.org","name":"Hans Nilsson"},"message":"Merge branch 'maint'\n\n* maint:\n  Fix ssh:connect erroneus error msg at timeout","distinct":false,"url":"https://api.github.com/repos/norton/otp/commits/9f6f29e5c58ab9e39a4de3142c9670c925734130"}]}