crypt of decay - January 17th, 2017 [entries|archive|friends|userinfo]
ketmar

[ userinfo | ljr userinfo ]
[ archive | journal archive ]

January 17th, 2017

однако [Jan. 17th, 2017|03:16 am]
всё сильнее хочется вернуться назад на оперу. всякие «уеб-приложения» я всё равно не использую, поэтому мне пофигу, насколько каракан устарел. а скорость охуевающая, отзывчивость великолепная — и можно будет, наконец, починить оставшиеся мелочи, которые меня в своё время раздражали. сделать нормальный блокер скриптов, который умеет правильно inline scripts убивать, высунуть остаток API, сваять на нём расширение по типу uMatrix… собственно, больше ничего и не надо. и можно будет ещё сто лет не дёргаться.
Link17 meows|meow!

яху! [Jan. 17th, 2017|10:56 am]
function n () {
  let a = 666;
  {
    let a = 40;
    a += 2;
    print(a);
  }
  print(a);
  return a;
}

print(n());

выхлоп:
42
666
666

кривохак с подсчётом глубины блоков кривой и медленный (при каждом поиске локала делается линейный поиск по списку локалов), но очень похож на работоспособный, и каракан больше не падает!

да, я решил, что зачем я сопротивляюсь своим безобидным желаниям? ну, хочется мне заняться некрофилией — так отчего бы и да, коль скоро никому не мешает.
Link14 meows|meow!

кстати, ещё о си, крестах и безопасном коде [Jan. 17th, 2017|01:01 pm]
у меня есть подозрение, что оперный «баг», из‐за которого надо вставлять «-fno-delete-null-pointer-checks» — на самом деле снова проявление шибко глубокого компиляторного интеллекта.

падает оно внутри delete, куда попадает с NULL. а не должно. почему же компилятор мог убрать проверку на NULL? а потому что прямо перед этим там… ну, вот такое примерно:
for (int n = 0; n < smth.fuck.count; ++n) smth.fuck[n].fuckme();
delete smth.fuck[];
delete[] smth.fuck;

жопа в том, что цикл без охраны. а компилятор уверен, что программ с UB на свете не бывает. соответственно, программер гарантирует этим циклом, что `smth.fuck` ни перед, ни после цикла нулом быть не может. и проверка в заинлайненом delete идёт по пизде.

скорее всего, чтобы триггернуть эту «оптимизацию», нужны ещё какие‐то условия. а может это действительно просто баг в самом оптимизаторе. но может я и прав. но мне лень ставить туда охрану, я лучше флаг заебошу, мне так спокойней. мало ли, где ещё может подобный код быть.

да и флаг очень намекает на то, что я прав.


upd: пардон, не там скобки нарисовал. спасибо [info]tzirechnoy
Link2 meows|meow!

navigation
[ viewing | January 17th, 2017 ]
[ go | Previous Day|Next Day ]