Advertisement
whitequark

Untitled

Apr 26th, 2011
292
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Ruby 100.06 KB | None | 0 0
  1. (03:59:22 PM) whitequark: я блядь понял
  2. (03:59:36 PM) Grindars: я задокументировал, домучиваю гит и ща залью
  3. (03:59:41 PM) whitequark: лямбды создаются не в исполняемом контексте, а в лексическом!!!1
  4. (03:59:55 PM) whitequark: г-споди, я два дня этим себе мозг ебал.
  5. (04:00:01 PM) whitequark: сколько же над этим думал Юкихиро...
  6. (04:00:12 PM) Grindars: у меня как-то был месячный затуп над абортами в арме
  7. (04:00:31 PM) Grindars: автор лд потом, наверное, весь день икал
  8. (04:00:37 PM) whitequark: хехе
  9. (04:01:14 PM) whitequark: ммм
  10. (04:01:19 PM) whitequark: а когда оно будет выполнят?
  11. (04:01:25 PM) Grindars: скоро
  12. (04:02:30 PM) Grindars: я по тупости сделал mv вместо git mv, теперь ремонтирую
  13. (04:02:51 PM) whitequark: че там чинить
  14. (04:02:53 PM) whitequark: git add -A
  15. (04:03:20 PM) Grindars: блядь
  16. (04:03:27 PM) Grindars: очень плохой совет
  17. (04:03:35 PM) Grindars: оно туда мегатонну хуйни втянуло
  18. (04:04:55 PM) Grindars: пушнул
  19. (04:05:21 PM) Grindars: ремот впилю тогда потом
  20. (04:05:29 PM) Grindars: пойду курить V8
  21. (04:05:38 PM) whitequark: о, вижу
  22. (04:05:39 PM) whitequark: гуд
  23. (04:05:45 PM) whitequark: это, отчего может быть такая фенька
  24. (04:05:56 PM) whitequark: после саспенда ядро выпадает в бесконечный цикл чего-то типа oops
  25. (04:06:00 PM) whitequark: на magic sysrq не реагирует
  26. (04:06:03 PM) whitequark: ядро не менял уже давно
  27. (04:06:06 PM) whitequark: сегодня три раза
  28. (04:06:07 PM) Grindars: я не кернел-девелопер
  29. (04:06:08 PM) whitequark: раньше такого не было
  30. (04:06:11 PM) whitequark: а вдруг знаешь
  31. (04:06:14 PM) Grindars: а не знаю
  32. (04:06:18 PM) Grindars: я не юзаю саспенд
  33. (04:06:21 PM) Grindars: я юзаю костыли
  34. (04:06:25 PM) Grindars: называется "ссд"
  35. (04:06:32 PM) Grindars: система бутается быстрее, чем просыпается
  36. (04:06:42 PM) whitequark: и скока?
  37. (04:06:56 PM) Grindars: 3 сек до десктопа кде
  38. (04:06:56 PM) whitequark: т.е. объем и бабло
  39. (04:07:00 PM) Grindars: а
  40. (04:07:18 PM) Grindars: 32 гига объем
  41. (04:07:25 PM) Grindars: бабло... не помню(
  42. (04:07:28 PM) Grindars: чек искать лень
  43. (04:07:35 PM) whitequark: 32 гига... может, мне и хватит
  44. (04:07:37 PM) whitequark: если внешний купить
  45. (04:07:38 PM) whitequark: а я купил
  46. (04:07:41 PM) whitequark: коробочку, то есть.
  47. (04:07:46 PM) Grindars: но это десктоп и на ссд система
  48. (04:07:50 PM) whitequark: угу
  49. (04:07:53 PM) whitequark: я могу и вынуть тащем-та
  50. (04:08:00 PM) Grindars: к нему еще 2ТБ сторейджа
  51. (04:08:03 PM) whitequark: ебать
  52. (04:08:06 PM) whitequark: мне бы 50 гиг хватило
  53. (04:08:16 PM) Grindars: а у меня один винт забит только фильмами
  54. (04:08:23 PM) whitequark: Vertex 2 SATA II 2.5" SSD
  55. (04:08:27 PM) whitequark: читаю «virtex»
  56. (04:08:29 PM) Grindars: Virtex?!
  57. (04:08:36 PM) Grindars: а, vertex
  58. (04:08:39 PM) whitequark: хехе
  59. (04:08:42 PM) whitequark: фпга ГМ
  60. (04:08:53 PM) Grindars: жарко блядь
  61. (04:08:57 PM) whitequark: ага
  62. (04:09:01 PM) whitequark: я обычно быстро хожу
  63. (04:09:03 PM) whitequark: сегодня охуел
  64. (04:09:08 PM) whitequark: дошел 50м до поликлиники и сварился
  65. (04:09:14 PM) Grindars: поэтому я шел медлеееееннноооо
  66. (04:09:20 PM) whitequark: а я не могу
  67. (04:09:32 PM) whitequark: всегда хожу быстро.
  68. (04:09:36 PM) whitequark: пока не начну подыхать
  69. (04:09:38 PM) whitequark: тогда медленно, да.
  70. (04:09:39 PM) Grindars: я попутно развлекаюсь хуйней
  71. (04:09:45 PM) Grindars: например, считаю голубей
  72. (04:09:48 PM) whitequark: ...
  73. (04:09:51 PM) whitequark: считать.
  74. (04:09:52 PM) whitequark: голубей.
  75. (04:09:55 PM) whitequark: ненавижу голубей
  76. (04:09:57 PM) whitequark: они срут на меня
  77. (04:09:58 PM) Grindars: я тоже
  78. (04:10:07 PM) whitequark: я могу их только в прицеле считать, наверное
  79. (04:10:36 PM) Grindars: ночью разбудил сервер
  80. (04:10:55 PM) Grindars: ПИИИИУУУУ. ПИИИИУУУУ. ПИИИИУУУУ.
  81. (04:11:09 PM) whitequark: а?
  82. (04:11:11 PM) whitequark: это что?
  83. (04:11:22 PM) Grindars: overheat
  84. (04:11:38 PM) Grindars: какой-то долбоеб решил, что на него надо класть пакеты
  85. (04:11:52 PM) whitequark: пакеты?
  86. (04:11:59 PM) Grindars: полиэтиленовые
  87. (04:12:06 PM) whitequark: мда
  88. (04:12:09 PM) whitequark: http://market.yandex.ru/model.xml?hid=91033&modelid=6125258
  89. (04:12:12 PM) whitequark: во, такой куплю
  90. (04:12:15 PM) whitequark: когда еще бабла дадут
  91. (04:12:16 PM) Grindars: учти
  92. (04:12:25 PM) whitequark: wear?
  93. (04:12:30 PM) Grindars: надо как можно более новое ядро
  94. (04:12:32 PM) Grindars: но не 38
  95. (04:12:34 PM) whitequark: хм
  96. (04:12:35 PM) Grindars: оно эпик фейл
  97. (04:12:40 PM) whitequark: хмхм.
  98. (04:12:40 PM) Grindars: 25% проеб питания
  99. (04:12:43 PM) Grindars: регрессия
  100. (04:12:46 PM) whitequark: пидарасы.
  101. (04:12:51 PM) Grindars: ext4
  102. (04:12:56 PM) whitequark: ext4...
  103. (04:12:57 PM) Grindars: и хитрые опции монтирования
  104. (04:13:00 PM) Grindars: ext3 нельзя
  105. (04:13:02 PM) Grindars: LVM нельзя
  106. (04:13:05 PM) whitequark: блядь.
  107. (04:13:08 PM) Grindars: не будет TRIM и оно деградирует
  108. (04:13:09 PM) whitequark: без LVM хуево
  109. (04:13:12 PM) whitequark: надо систему переставлять
  110. (04:13:19 PM) Grindars: я не переставлял
  111. (04:13:22 PM) Grindars: я забиндил винт
  112. (04:13:28 PM) whitequark: копипаст?
  113. (04:13:30 PM) Grindars: /dev/sda3 on /mnt/hdd type ext3 (rw,commit=0)
  114. /mnt/hdd/home on /home type none (rw,bind,commit=0)
  115. /mnt/hdd/opt/Xilinx on /opt/Xilinx type none (rw,bind,commit=0)
  116. (04:13:57 PM) Grindars: дальше надо
  117. tmpfs on /tmp type tmpfs (rw)
  118. tmpfs on /var/run type tmpfs (rw)
  119. tmpfs on /var/lock type tmpfs (rw)
  120. иначе износ
  121. (04:14:04 PM) whitequark: ага
  122. (04:14:13 PM) Grindars: опции ext4: noatime,discard
  123.  
  124. (04:14:27 PM) whitequark: ага
  125. (04:14:33 PM) Grindars: обязательно сата в нативном режиме (AHCI, nvsata)
  126. (04:14:40 PM) whitequark: ясен пень
  127. (04:15:45 PM) Grindars: $ sudo /sbin/hdparm -I /dev/sdb
  128. [sudo] password for grindars:
  129.  
  130. /dev/sdb:
  131.  
  132. ATA device, with non-removable media
  133.        Model Number:       TS32GSSD25S-M                          
  134.        Serial Number:      20101213389555076872
  135.        Firmware Revision:  100707A
  136.        Transport:          Serial, ATA8-AST, SATA 1.0a, SATA II Extensions, SATA Rev 2.5, SATA Rev 2.6
  137. Standards:
  138.        Supported: 8 7 6 5
  139.        Likely used: 8
  140. Configuration:
  141.        Logical         max     current
  142.        cylinders       16383   16383
  143.        heads           16      16
  144.        sectors/track   63      63
  145.        --
  146.        CHS current addressable sectors:   16514064
  147.        LBA    user addressable sectors:   62533296
  148.        LBA48  user addressable sectors:   62533296
  149.        Logical  Sector size:                   512 bytes
  150.        Physical Sector size:                   512 bytes
  151.        Logical Sector-0 offset:                512 bytes
  152.        device size with M = 1024*1024:       30533 MBytes
  153.        device size with M = 1000*1000:       32017 MBytes (32 GB)
  154.        cache/buffer size  = unknown
  155.        Form Factor: 2.5 inch
  156.        Nominal Media Rotation Rate: Solid State Device
  157. Capabilities:
  158.        LBA, IORDY(can be disabled)
  159.        Queue depth: 32
  160.        Standby timer values: spec'd by Standard, no device specific minimum
  161.        R/W multiple sector transfer: Max = 16  Current = 16
  162.        Advanced power management level: disabled
  163.        DMA: mdma0 mdma1 mdma2 udma0 udma1 udma2 udma3 udma4 udma5 *udma6
  164.             Cycle time: min=120ns recommended=120ns
  165.        PIO: pio0 pio1 pio2 pio3 pio4
  166.             Cycle time: no flow control=120ns  IORDY flow control=120ns
  167. Commands/features:
  168.        Enabled Supported:
  169.           *    SMART feature set
  170.                Security Mode feature set
  171.           *    Power Management feature set
  172.           *    Write cache
  173.           *    Look-ahead
  174.           *    Host Protected Area feature set
  175.           *    WRITE_BUFFER command
  176.           *    READ_BUFFER command
  177.           *    DOWNLOAD_MICROCODE
  178.                Advanced Power Management feature set
  179.                SET_MAX security extension
  180.           *    48-bit Address feature set
  181.           *    Device Configuration Overlay feature set
  182.           *    Mandatory FLUSH_CACHE
  183.           *    FLUSH_CACHE_EXT
  184.           *    SMART error logging
  185.           *    SMART self-test
  186.           *    General Purpose Logging feature set
  187.           *    WRITE_{DMA|MULTIPLE}_FUA_EXT
  188.           *    64-bit World wide name
  189.           *    WRITE_UNCORRECTABLE_EXT command
  190.           *    Gen1 signaling speed (1.5Gb/s)
  191.           *    Gen2 signaling speed (3.0Gb/s)
  192.           *    Native Command Queueing (NCQ)
  193.           *    Phy event counters
  194.           *    DMA Setup Auto-Activate optimization
  195.           *    Software settings preservation
  196.           *    Data Set Management TRIM supported (limit unknown)
  197. Security:
  198.        Master password revision code = 65534
  199.                supported
  200.        not     enabled
  201.        not     locked
  202.        not     frozen
  203.        not     expired: security count
  204.                supported: enhanced erase
  205.        20min for SECURITY ERASE UNIT. 20min for ENHANCED SECURITY ERASE UNIT.
  206. Logical Unit WWN Device Identifier: 5001b8c000000000
  207.        NAA             : 5
  208.        IEEE OUI        : 001b8c
  209.        Unique ID       : 000000000
  210. Checksum: correct
  211.  
  212. (04:16:14 PM) Grindars: кстати, прикольно
  213. (04:16:30 PM) Grindars: SSD:        20min for SECURITY ERASE UNIT. 20min for ENHANCED SECURITY ERASE UNIT.
  214. HDD:        212min for SECURITY ERASE UNIT. 212min for ENHANCED SECURITY ERASE UNIT.
  215. (04:16:36 PM) whitequark: хыхы
  216. (04:16:43 PM) Grindars: нанду можно взять и уебать, а хдд надо долго дрочить
  217. (04:16:54 PM) Grindars: тут на лоре спрашиваю
  218. (04:16:57 PM) Grindars: *спрашивали
  219. (04:17:00 PM) whitequark: а.
  220. (04:17:01 PM) whitequark: уф.
  221. (04:17:19 PM) whitequark: у тебя в коде trailing tabs
  222. (04:17:22 PM) whitequark: ffuuuu~~~
  223. (04:17:24 PM) Grindars: почисти
  224. (04:17:33 PM) whitequark: так ты опять насрешь
  225. (04:17:38 PM) Grindars: если винт кинуть в термит, чтобы поднялось выше точки кюри (а лучше расплавило к ебеням), точно нельзя будет отрекаверить?
  226. (04:17:45 PM) whitequark: да
  227. (04:18:28 PM) Grindars: ему предлагают: лучше зашифруй, а ключ на флешку, ее проще уничтожить
  228. (04:18:50 PM) Grindars: он: дык флешки еще проще восстановить
  229. ему: ты ее молотком разъеби нахуй, и нечего будет восстанавливать
  230. (04:18:59 PM) whitequark: ага
  231. (04:19:15 PM) Grindars: нанду в азотную кислоту, чтобы корпус нахуй
  232. (04:19:27 PM) whitequark: ага
  233. (04:19:34 PM) whitequark: проще тупо молотком.
  234. (04:19:36 PM) whitequark: по кристаллу
  235. (04:19:40 PM) whitequark: и хуй восстановишь
  236. (04:19:52 PM) Grindars: по корпусу микрухи можно долго бит
  237. (04:19:53 PM) Grindars: *бить
  238. (04:19:56 PM) Grindars: хуй ей чего будет
  239. (04:20:00 PM) whitequark: неа
  240. (04:20:07 PM) whitequark: надо просто знать, куда бить
  241. (04:20:08 PM) whitequark: и один удар.
  242. (04:20:12 PM) Grindars: поврежденные ноги рекаверятся советским методом
  243. (04:20:19 PM) whitequark: при чем тут ноги
  244. (04:20:20 PM) Grindars: корпус пилится, паяется проволочка
  245. (04:20:21 PM) whitequark: я ж сказал
  246. (04:20:24 PM) whitequark: "знать, куда бить
  247. (04:20:25 PM) Grindars: припаивается
  248. (04:20:31 PM) Grindars: это надо знать топологию?
  249. (04:20:31 PM) whitequark: по кристаллу
  250. (04:20:35 PM) whitequark: кристалл пополам и все
  251. (04:20:44 PM) whitequark: по центру чипа блядь
  252. (04:21:17 PM) whitequark: wtf StandardRubyCompiler?
  253. (04:21:24 PM) Grindars: там все описано
  254. (04:21:33 PM) whitequark: э
  255. (04:21:36 PM) whitequark: разве?
  256. (04:21:41 PM) Grindars: ты тянул?
  257. (04:21:47 PM) whitequark: а, хидер
  258. (04:21:47 PM) Grindars: оно должно быть все в доксигене
  259. (04:21:50 PM) whitequark: я привык к рдоку.
  260. (04:21:53 PM) whitequark:  /** \brief Класс, включающий стандартные реализации некоторых функций для
  261.  *         реализации компилятора Ruby.
  262.  */
  263. (04:21:54 PM) whitequark: гмм.
  264. (04:22:04 PM) whitequark: реализации реализации реализации?
  265. (04:22:24 PM) Grindars: у меня энтерпрайз гм?
  266. (04:22:28 PM) whitequark: да.
  267. (04:22:31 PM) Grindars: фак
  268. (04:22:40 PM) Grindars: бизнес-логика?
  269. (04:22:44 PM) whitequark: угу
  270. (04:23:11 PM) Grindars: у гугла pkg-configфобия
  271. (04:23:20 PM) whitequark: почему?
  272. (04:23:37 PM) Grindars: у v8 нету файлика
  273. (04:23:44 PM) Grindars: придется старым методом
  274. (04:28:02 PM) Grindars: checking v8.h usability... yes
  275. checking v8.h presence... yes
  276. checking for v8.h... yes
  277. checking for _ZN2v86Script3RunEv in -lv8... yes
  278. (04:28:09 PM) Grindars: пиздец?
  279. (04:28:11 PM) whitequark: гм
  280. (04:28:13 PM) whitequark: вроде того
  281. (04:28:19 PM) Grindars: у него нет не-C++-функций
  282. (04:28:27 PM) whitequark: совсем?
  283. (04:28:30 PM) Grindars: совсем
  284. (04:28:37 PM) Grindars: а какая-нибудь функция нужна автоконфу, чтобы найти либу
  285. (04:28:40 PM) whitequark: угу
  286. (04:29:34 PM) whitequark: хы
  287. (04:29:38 PM) whitequark: переходы с google.co.jp
  288. (04:30:30 PM) whitequark: блин
  289. (04:30:37 PM) whitequark: меня ебет делать лямбды, пока оно не выполняется
  290. (04:30:43 PM) whitequark: не хотет старую версию колдрубе.
  291. (04:30:46 PM) Grindars: дык я это
  292. (04:30:50 PM) Grindars: прям ща впиливаю
  293. (04:30:52 PM) whitequark: ага
  294. (04:31:43 PM) Grindars: а чему равен код возврата руби?
  295. (04:33:04 PM) whitequark: м
  296. (04:33:09 PM) whitequark: всм?
  297. (04:33:16 PM) whitequark: как exit сделаешь, так и будет
  298. (04:33:20 PM) whitequark: как в сях
  299. (04:33:23 PM) Grindars: ясно
  300. (04:33:23 PM) whitequark: по умолчанию 0, конечно
  301. (04:34:18 PM) whitequark: тестбенч тоже можно убить, походу
  302. (04:34:37 PM) Grindars: кого?
  303. (04:34:56 PM) whitequark: да был там недоскриптик
  304. (04:39:49 PM) Grindars: вот в в8 С++ кооперирует с ГЦ, и он объект внезапно не снесет
  305. (04:40:41 PM) Grindars: grindars 10444  0.0  0.1  53608  7000 pts/0    Sl+  16:40   0:00 /home/grindars/coldruby-rewrite/coldruby/coldruby ./hello.r
  306. (04:41:00 PM) Grindars: это с контекстом V8
  307. (04:41:03 PM) whitequark: .r?
  308. (04:41:03 PM) Grindars: без контекста:
  309. grindars 10500  0.0  0.0  11428  4984 pts/0    Sl+  16:40   0:00 /home/grindars/coldruby-rewrite/coldruby/coldruby ./hello.rb
  310. (04:41:09 PM) whitequark: гуд
  311. (04:41:15 PM) whitequark: это меньше MRI
  312. (04:41:17 PM) whitequark: значительно
  313. (04:45:04 PM) Grindars: <unknown>:73176: Uncaught SyntaxError: Unexpected token ILLEGAL
  314. вот что плохо, отладочная инфа проебывается
  315. (04:45:10 PM) whitequark: да
  316. (04:45:25 PM) whitequark: у меня для этого особый костыль, который в нативные функции впихивает их положение
  317. (04:45:28 PM) whitequark: при компиляции
  318. (04:45:55 PM) whitequark: в в8 вроде есть
  319. (04:45:57 PM) whitequark: интерфейсы
  320. (04:47:31 PM) Grindars:
  321. /* Runtime: /home/grindars/coldruby-rewrite/runtime/Makefile */ LOL WHAT
  322. (04:47:42 PM) whitequark: гы
  323. (04:47:44 PM) whitequark: без понятия
  324. (04:49:19 PM) Grindars: This data can be calculated for a script in advance of actually compiling it, and can be stored between compilations. When script data is given to the compile method compilation will be faster.
  325. (04:49:24 PM) Grindars: можно сбрасывать байт-код.
  326. (04:51:00 PM) whitequark: гуд
  327. (05:03:41 PM) Grindars has signed on.
  328. (05:08:50 PM) whitequark: ну как
  329. (05:08:51 PM) whitequark: *?
  330. (05:08:59 PM) Grindars: делаю принт исключений
  331. (05:10:31 PM) Grindars: coldruby: <compiled>:2631: SyntaxError: Unexpected token ILLEGAL
  332. # Makefile.in generated by automake 1.11.1 from Makefile.am.
  333. ^
  334. Stack trace:
  335. SyntaxError: Unexpected token ILLEGAL
  336.  
  337. (05:11:11 PM) Grindars: багу фиксед
  338. (05:11:14 PM) Grindars: теперь выполнение...
  339. (05:11:34 PM) Grindars: после компиляции:
  340. grindars 11417  1.0  0.1  53624  7744 pts/0    Sl+  17:11   0:00 /home/grindars/coldruby-rewrite/coldruby/coldruby ./hello.rb
  341.  
  342. (05:13:46 PM) Grindars: ColdRubyVM: init
  343. ColdRubyVM: eval
  344. coldruby: <compiled>:566: ReferenceError: $i is not defined
  345.         throw e;
  346. ~~~~~~~~^
  347. Stack trace:
  348. ReferenceError: $i is not defined
  349.     at Object.<anonymous> (<compiled>:2687:9)
  350.     at Object.protect (<compiled>:561:19)
  351.     at <compiled>:2673:15
  352.     at <compiled>:2706:2
  353. ColdRubyVM: fini
  354.  
  355. (05:14:11 PM) Grindars: оно разъехалось немного, на самом деле стрелочка кажет на throw
  356. (05:15:09 PM) Grindars: у меня такой вопрос, а зачем я клеил фреймворки?
  357. (05:17:31 PM) Grindars: так
  358. (05:17:34 PM) Grindars: объясни
  359. (05:18:03 PM) Grindars: def get_runtime(directory, plaintext=false)
  360.   runtime = []
  361.   Dir[File.join(directory, '*.js')].sort.each do |runtime_file|
  362.     # Preprocess
  363.     lines = File.readlines(runtime_file)
  364.     last_definition = nil
  365.     lines.each_with_index { |line, index|
  366.       if line =~ %r{^\$\.define_method\(}
  367.         last_definition = index
  368.       elsif last_definition && line == "});\n"
  369.         lines[index] = "}, { file: #{File.basename(runtime_file).inspect}," <<
  370.                        " line: #{last_definition + 1} });\n"
  371.       end
  372.     }
  373.  
  374.     if plaintext
  375.       runtime_part = ''
  376.       runtime_part << "/* Runtime: #{runtime_file} */\n\n" if plaintext
  377.       runtime_part << lines.join
  378.       runtime_part << "\n\n"
  379.       runtime << runtime_part
  380.     else
  381.       runtime << [File.basename(runtime_file), lines.join]
  382.     end
  383.   end
  384.   runtime
  385. end
  386.  
  387. (05:18:14 PM) Grindars: что это блядь за поебота с определениями методов
  388. (05:20:42 PM) Grindars: пинг
  389. (05:23:42 PM) whitequark: понг
  390. (05:23:44 PM) whitequark: так
  391. (05:23:47 PM) whitequark: объясняю
  392. (05:23:55 PM) whitequark: это как раз та вставка номеров строк
  393. (05:23:59 PM) whitequark: и названия файла
  394. (05:24:07 PM) whitequark: чтобы в трейсах не <unknown native>
  395. (05:24:12 PM) whitequark: а функция.
  396. (05:24:39 PM) Grindars: ясн
  397. (05:24:49 PM) Grindars: проще нормально экспортировать нативные
  398. (05:27:06 PM) whitequark: хмм
  399. (05:27:08 PM) whitequark: всмысле?
  400. (05:27:25 PM) Grindars: дефайнить их в V8
  401. (05:27:45 PM) whitequark: хмм
  402. (05:27:47 PM) whitequark: нипонел
  403. (05:27:59 PM) whitequark: натив для колдрубе это жс
  404. (05:28:05 PM) whitequark: потому что иначе, скажем, на ноде не заведется
  405. (05:28:07 PM) Grindars: а, вот оно что
  406. (05:29:36 PM) whitequark: че за фреймворки ты клеил?
  407. (05:29:51 PM) Grindars: тьфу
  408. (05:29:53 PM) Grindars: рантаймы
  409. (05:30:00 PM) Grindars: я их постоянно фреймворками обзываю
  410. (05:30:01 PM) whitequark: а.
  411. (05:30:04 PM) Grindars: не знаю, почему
  412. (05:31:38 PM) Grindars: рантайм теперь не строка, а std::vector<ColdRubyRuntime>
  413. (05:31:42 PM) whitequark: мда...
  414. (05:31:53 PM) Grindars: class ColdRubyRuntime {
  415. public:
  416.     ColdRubyRuntime(std::string code = std::string(), std::string file = std::string()) : m_code(code), m_file(file) {
  417.        
  418.     }
  419.  
  420.     inline const std::string &code() const { return m_code; }
  421.     inline const std::string &file() const { return m_file; }
  422.  
  423. private:
  424.     std::string m_code, m_file;
  425. };
  426. (05:37:54 PM) Grindars: ColdRubyVM: init
  427. ColdRubyVM: eval
  428. ColdRubyVM: eval
  429. ColdRubyVM: eval
  430. ColdRubyVM: eval
  431. ColdRubyVM: eval
  432. ColdRubyVM: eval
  433. ColdRubyVM: eval
  434. ColdRubyVM: eval
  435. ColdRubyVM: eval
  436. ColdRubyVM: eval
  437. ColdRubyVM: eval
  438. ColdRubyVM: eval
  439. ColdRubyVM: eval
  440. ColdRubyVM: eval
  441. ColdRubyVM: eval
  442. ColdRubyVM: eval
  443. ColdRubyVM: eval
  444. ColdRubyVM: eval
  445. ColdRubyVM: eval
  446. ColdRubyVM: eval
  447. ColdRubyVM: eval
  448. ColdRubyVM: eval
  449. ColdRubyVM: eval
  450. ColdRubyVM: eval
  451. ColdRubyVM: fini
  452. (05:38:03 PM) whitequark: однако
  453. (05:38:05 PM) whitequark: сколько евалов
  454. (05:38:20 PM) Grindars: это я рантайм гружу
  455. (05:39:49 PM) Grindars: ColdRubyVM: init
  456. coldruby: 01_ruby.js:564: ReferenceError: $i is not defined
  457.         throw e;
  458. ~~~~~~~~^
  459. Stack trace:
  460. ReferenceError: $i is not defined
  461.     at Object.<anonymous> (<compiled>:61:9)
  462.     at Object.protect (01_ruby.js:559:19)
  463.     at <compiled>:47:15
  464.     at <compiled>:80:2
  465. ColdRubyVM: fini
  466. уже лучше, правда?
  467. (05:41:59 PM) Grindars: ага, вот оно где.
  468. (05:42:00 PM) Grindars:         $i.print("Native exception: " + e.stack + "\n");
  469. (05:42:13 PM) Grindars: пока временно сделаю $i.print и $i.exit
  470. (05:42:23 PM) Grindars: чтоб тебе было на чем дебажить
  471. (05:42:33 PM) whitequark: хм...
  472. (05:42:36 PM) whitequark: это
  473. (05:42:40 PM) whitequark: снеси этот код к ебеням
  474. (05:42:45 PM) whitequark: ща, скажу
  475. (05:42:46 PM) Grindars: а он где?
  476. (05:44:06 PM) whitequark: compile.rb!
  477. (05:44:28 PM) whitequark: ща скажу, как надо
  478. (05:44:33 PM) Grindars: лучше запуши
  479. (05:44:33 PM) whitequark: думаю, там почти все надо уебать
  480. (05:44:35 PM) whitequark: дада
  481. (05:44:37 PM) whitequark: запушу
  482. (05:44:44 PM) whitequark: во, смотри
  483. (05:44:50 PM) whitequark: запусти сам $.create_ruby()
  484. (05:44:50 PM) Grindars: ты хочешь, чтобы исключения пролетали?
  485. (05:45:06 PM) whitequark: я хочу, чтобы самый наружний обработчик был у тебя.
  486. (05:45:16 PM) Grindars: в нативном коде?
  487. (05:45:19 PM) whitequark: да
  488. (05:45:31 PM) Grindars: запустить... $.create_ruby()... сам?
  489. (05:45:33 PM) Grindars: wut,
  490. (05:45:35 PM) Grindars: *?
  491. (05:45:40 PM) whitequark: да
  492. (05:45:42 PM) whitequark: в нативном коде тоже.
  493. (05:45:48 PM) whitequark: и то есть
  494. (05:45:50 PM) whitequark: *то есть
  495. (05:45:51 PM) whitequark: смотри
  496. (05:45:56 PM) whitequark: после того, как загрузишь рантайм
  497. (05:46:05 PM) whitequark: делаешь create_ruby и create_toplevel
  498. (05:46:12 PM) whitequark: кладешь куда-нибудь, чтобы было няшно
  499. (05:46:35 PM) whitequark: вообще, $ плохое название...
  500. (05:46:44 PM) whitequark: ща я все перелопачу.
  501. (05:46:55 PM) Grindars: а что делать с руби и топлевелом?
  502. (05:46:59 PM) whitequark: сек.
  503. (05:47:10 PM) Grindars: и протект мне надо делать в нативе или хуй с ним?
  504. (05:47:24 PM) whitequark: ща, я переделаю и все объясню
  505. (05:49:05 PM) Grindars: думаю, ColdRubyVM нужен метод
  506. ColdRuby *createRuby();
  507. который это сделает
  508. (05:49:39 PM) Grindars: и уже этот ColdRuby будет везде
  509. (05:50:03 PM) Grindars: MOAR REFUCKTORING
  510. (05:51:30 PM) whitequark: ага
  511. (05:51:57 PM) whitequark: так
  512. (05:52:02 PM) whitequark: интегрировал топлевел внутрь руби
  513. (05:52:22 PM) Grindars: здорово, не нужен какой-то левый непонятный объект
  514. (05:52:27 PM) Grindars: или это  глобальный контекст?
  515. (05:52:32 PM) whitequark: хм?
  516. (05:52:46 PM) Grindars: как window
  517. (05:53:04 PM) whitequark: ruby — да
  518. (05:53:22 PM) whitequark: топлевел просто один для каждого руби
  519. (05:53:25 PM) whitequark: ну, так проще
  520. (05:55:16 PM) whitequark:
  521. (function() {
  522.   var iseq = #{code};
  523.  
  524.   var new_symbols = #{pool.symbols};
  525.   for(var k in new_symbols) {
  526.     $.symbols[k] = parseInt($.text2sym(new_symbols[k]).value);
  527.   }
  528.  
  529.   var sf_opts = {
  530.     self: ruby.toplevel,
  531.     ddef: ruby.toplevel,
  532.     cref: [$c.Object],
  533.   };
  534.  
  535.   return ruby.execute(sf_opts, iseq, []);
  536. })();
  537. (05:55:19 PM) whitequark: все, что осталось
  538. (05:55:24 PM) whitequark: нахуя return?..
  539. (05:56:37 PM) whitequark: сделай объект ruby
  540. (05:56:39 PM) whitequark: глобальный
  541. (05:57:03 PM) Grindars: а как же многорубье?
  542. (05:57:09 PM) whitequark: мнэээ
  543. (05:57:12 PM) whitequark: в разных контекстах же
  544. (05:57:16 PM) whitequark: контекстах в8
  545. (05:57:22 PM) whitequark: а смысл в одном делать?
  546. (05:57:27 PM) whitequark: а, не
  547. (05:57:30 PM) whitequark: сделаю не так.
  548. (05:57:32 PM) whitequark: ща
  549. (05:57:48 PM) whitequark: function(ruby) {
  550.   var iseq = #{code};
  551.  
  552.   var new_symbols = #{pool.symbols};
  553.   for(var k in new_symbols) {
  554.     ruby.symbols[k] = parseInt(ruby.text2sym(new_symbols[k]).value);
  555.   }
  556.  
  557.   var sf_opts = {
  558.     self: ruby.toplevel,
  559.     ddef: ruby.toplevel,
  560.     cref: [$c.Object],
  561.   };
  562.  
  563.   ruby.execute(sf_opts, iseq, []);
  564. }
  565. (05:57:49 PM) whitequark: вот
  566. (05:57:56 PM) whitequark: и вот это съевалишь и запустишь
  567. (05:58:08 PM) Grindars: погодь, я руби не создал
  568. (05:58:16 PM) Grindars: у меня тут refucktoring
  569. (05:59:22 PM) Grindars: тогда ColdRuby будет синглтоном ColdRubyVM
  570. (05:59:53 PM) whitequark: почему бы и нет
  571. (06:00:47 PM) whitequark: пуш
  572. (06:01:14 PM) Grindars: а руби = $.create_ruby?
  573. (06:01:17 PM) whitequark: да
  574. (06:01:22 PM) Grindars: нет, погоди, руби не будет сиглтоном
  575. (06:01:28 PM) Grindars: блядь, запутал уже
  576. (06:02:03 PM) whitequark: а?
  577. (06:02:21 PM) Grindars: колдруби - не сиглтон, их же несколько таки может быть
  578. (06:02:25 PM) whitequark: ага
  579. (06:02:49 PM) Grindars: ruby creation failed
  580. (06:02:52 PM) Grindars: не удалось создать рубин
  581. (06:13:18 PM) whitequark: ага
  582. (06:13:24 PM) whitequark: алхимия)
  583. (06:15:14 PM) Grindars: coldRuby->ToObject()->Get(v8::String::New("create_ruby")).Cast();
  584. (06:15:25 PM) whitequark: Cast?
  585. (06:15:27 PM) Grindars: кастануть руби?
  586. (06:15:28 PM) whitequark: ага
  587. (06:15:33 PM) Grindars: точно алхимия
  588. (06:15:52 PM) Grindars: какой укуренный идиот сочинял там шаблоны
  589. (06:16:08 PM) whitequark: в в8 жуткие шаблоны
  590. (06:16:38 PM) Grindars: v8::Handle<v8::Function> create_ruby = v8::Handle<v8::Function>::Cast(coldRuby->ToObject()->Get(v8::String::New("create_ruby")));
  591. вот так правильно кастовать
  592. (06:17:36 PM) whitequark: и точно, заклинание
  593. (06:17:47 PM) Grindars: бугагага
  594. (06:17:51 PM) whitequark: а?
  595. (06:17:57 PM) Grindars: ColdRubyVM: init
  596. <unknown>:-1: Uncaught TypeError: Cannot convert null to object
  597. <main>: [BUG] Segmentation fault
  598. ruby 1.9.2p136 (2010-12-25 revision 30365) [i686-linux]
  599.  
  600. -- control frame ----------
  601. c:0001 p:0000 s:0002 b:0002 l:001b34 d:001b34 TOP  
  602. ---------------------------
  603.  
  604. -- C level backtrace information -------------------------------------------
  605. /home/grindars/.rvm/rubies/ruby-1.9.2-p136/lib/libruby.so.1.9(rb_vm_bugreport+0x72) [0xb749a6c2]
  606. /home/grindars/.rvm/rubies/ruby-1.9.2-p136/lib/libruby.so.1.9(+0x56011) [0xb7374011]
  607. /home/grindars/.rvm/rubies/ruby-1.9.2-p136/lib/libruby.so.1.9(rb_bug+0x3a) [0xb737410a]
  608. /home/grindars/.rvm/rubies/ruby-1.9.2-p136/lib/libruby.so.1.9(+0x10812c) [0xb742612c]
  609. [0xb78a540c]
  610.  
  611. [NOTE]
  612. You may have encountered a bug in the Ruby interpreter or extension libraries.
  613. Bug reports are welcome.
  614. For details: http://www.ruby-lang.org/bugreport.html
  615.  
  616. Аварийный останов
  617.  
  618. (06:18:04 PM) Grindars: пойду срепортю
  619. (06:18:04 PM) whitequark: уронил.
  620. (06:18:08 PM) whitequark: неа
  621. (06:18:10 PM) Grindars: ты посмотри, кто трейсит
  622. (06:18:13 PM) Grindars: руби!
  623. (06:18:15 PM) whitequark: ну да
  624. (06:18:16 PM) Grindars: руби оттрейсил в8
  625. (06:18:18 PM) whitequark: ой
  626. (06:18:25 PM) whitequark: лол
  627. (06:23:16 PM) Grindars:     v8::Handle<v8::Function> create_ruby = v8::Handle<v8::Function>::Cast(
  628.         v8::Handle<v8::Object>::Cast(
  629.             m_context->Global()->Get(
  630.                 v8::String::New("$")
  631.             )
  632.         )->Get(
  633.             v8::String::New("create_ruby")
  634.         )
  635.     );
  636.  
  637. level 2
  638. (06:23:30 PM) whitequark: еб...
  639. (06:23:52 PM) Grindars: это я ебанулся или в8?
  640. (06:23:56 PM) whitequark: в8.
  641. (06:23:59 PM) whitequark: геты сверни в одну строку
  642. (06:24:01 PM) whitequark: лучше будет
  643. (06:24:26 PM) Grindars: пока кастуется только аборт
  644. (06:25:15 PM) whitequark: а поцчему?
  645. (06:25:20 PM) Grindars: ага, try_catch тут наооборот не нужен.
  646. (06:25:35 PM) Grindars: тут надо create_ruby.IsEmpty
  647. (06:28:09 PM) whitequark: о...
  648. (06:28:24 PM) Grindars: Call (Handle< Object > recv, int argc, Handle< Value > argv[])
  649. (06:28:30 PM) Grindars: recv == this?
  650. (06:28:35 PM) Grindars: == null?
  651. (06:28:48 PM) Grindars: а, нулл нельзя
  652. (06:28:50 PM) Grindars: $?
  653. (06:28:55 PM) whitequark: а?
  654. (06:28:58 PM) whitequark: $?
  655. (06:29:06 PM) Grindars: recv = $ ?
  656. (06:29:29 PM) whitequark: да
  657. (06:33:07 PM) ***whitequark проходит blobwars
  658. (06:33:34 PM) Grindars: ColdRubyVM.cpp:91:51: error: no matching function for call to ‘v8::Function::Call(v8::Handle<v8::Object>&, int, v8::Handle<v8::Primitive>)
  659. /usr/include/v8.h:1717:25: note: candidate is: v8::Local<v8::Value> v8::Function::Call(v8::Handle<v8::Object>, int, v8::Handle<v8::Value>*)
  660.  
  661. (06:33:36 PM) whitequark: хм.
  662. (06:33:40 PM) whitequark: вот у меня вечно эта хуйня
  663. (06:33:58 PM) whitequark: что-нибудь не проходит
  664. (06:35:17 PM) Grindars: язык шаблонов си++ плохо приделан к си++ и вечно отваливается где-нибудь
  665. (06:35:18 PM) Grindars: он функциональный, кстати
  666. (06:37:38 PM) whitequark: ага
  667. (06:37:40 PM) whitequark: знаю
  668. (06:39:50 PM) Grindars: да иди ты нахуй (, v8)! подсунул ему NULL.
  669. (06:39:57 PM) Grindars: прокатило
  670. (06:40:07 PM) Grindars: настоящий NULL вместо списка аргументов
  671. (06:41:12 PM) whitequark: ага
  672. (06:42:06 PM) Grindars: IMMA MERGIN' UR RUBY
  673. (06:44:31 PM) Grindars: вылез какой-то баг
  674. (06:44:44 PM) Grindars: oldruby: compiler boot failed: <main>: SyntaxError: /home/grindars/coldruby-rewrite/lib/commands/compile.rb:97: Invalid char `\x01' in expression
  675. /home/grindars/coldruby-rewrite/lib/commands/compile.rb:97: syntax error, unexpected $end, expecting '}'
  676.                        " line: #{lasY
  677.  
  678. там, ессно, не это.
  679. (06:45:21 PM) whitequark: странно
  680. (06:45:26 PM) whitequark: может, это твой NULL?
  681. (06:45:32 PM) Grindars: это после пулла
  682. (06:45:36 PM) Grindars: вообще другое место
  683. (06:45:36 PM) whitequark: а.
  684. (06:45:40 PM) whitequark: странно
  685. (06:46:10 PM) whitequark: 2217 знаков это
  686. (06:46:31 PM) whitequark: хз.
  687. (06:46:54 PM) Grindars: я знаю
  688. (06:46:57 PM) Grindars: но сначала уточню
  689. (06:47:22 PM) whitequark: ой-ой
  690. (06:47:32 PM) Grindars: std::string line(content, size); не делает deep copy.
  691. (06:47:37 PM) whitequark: о.
  692. (06:47:45 PM) whitequark: вытяни
  693. (06:47:52 PM) whitequark: я в магаз за кофе
  694. (06:50:33 PM) Grindars: делает копию, это я идиот
  695. (06:56:05 PM) Grindars:
  696. ColdRubyVM: init
  697. coldruby: ruby creation failed: 01_ruby.js:1106: TypeError: Cannot read property 'internal_constants' of undefined
  698.        klass:             ruby.internal_constants.Object,
  699. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^
  700. Stack trace:
  701. TypeError: Cannot read property 'internal_constants' of undefined
  702.    at Object.create_ruby (01_ruby.js:1106:32)
  703.  
  704. (06:56:27 PM) Grindars has signed off.
  705. (06:56:37 PM) Grindars has signed on.
  706. (06:58:13 PM) Grindars: -        klass:             ruby.internal_constants.Object,
  707. +        klass:             $c.Object,
  708.  
  709. наверное, так
  710. (06:58:38 PM) Grindars: нет,
  711. this.internal_constants.Object,
  712. (07:10:45 PM) whitequark: ага
  713. (07:10:55 PM) Grindars: почини и запушь
  714. (07:11:00 PM) whitequark: ок, ща
  715. (07:11:15 PM) Grindars: ColdRubyVM: init
  716. coldruby: <compiled>:1: SyntaxError: Illegal return statement
  717. return (function(ruby) {
  718. ^
  719. Stack trace:
  720. SyntaxError: Illegal return statement
  721.    at <compiled>:1:1
  722. ColdRubyVM: fini
  723.  
  724. (07:11:23 PM) whitequark: хм.
  725. (07:11:28 PM) whitequark: а как вернуть что-то из евала?
  726. (07:11:38 PM) Grindars: просто function() { }
  727. (07:11:42 PM) whitequark: ок, ща будет
  728. (07:11:56 PM) Grindars: открываю compile.rb
  729. (07:11:58 PM) Grindars: иксы падают
  730. (07:12:01 PM) whitequark: хех
  731. (07:12:01 PM) Grindars: рестартатся
  732. (07:12:03 PM) Grindars: автологин
  733. (07:12:05 PM) Grindars: авторестор
  734. (07:12:09 PM) Grindars: открылось все, как было
  735. (07:12:16 PM) Grindars: everything is working
  736. (07:12:20 PM) whitequark: если не знать, то и не заметишь?
  737. (07:12:23 PM) Grindars: да
  738. (07:12:33 PM) Grindars: моргнул экран, две секунды хуйни и пашет
  739. (07:12:40 PM) whitequark: оке
  740. (07:12:41 PM) whitequark: пуш
  741. (07:12:52 PM) whitequark: а ща коооофий
  742. (07:13:39 PM) Grindars: опиздинительно
  743. (07:13:44 PM) Grindars: kate даже историю undo сохранил
  744. (07:14:48 PM) Grindars: а скобки кто ставить будет?
  745. (07:14:53 PM) Grindars: (function() { })
  746. (07:17:48 PM) whitequark: а.
  747. (07:18:16 PM) whitequark: оке
  748. (07:18:24 PM) whitequark: коооофий.
  749. (07:18:31 PM) whitequark: гадость какая-то растворимая.
  750. (07:18:54 PM) whitequark: FFUUUUUUUU~~~~
  751. (07:19:10 PM) Grindars:     v8::TryCatch try_catch;
  752.    
  753.     v8::Handle<v8::Value> args[] = {
  754.         ruby->ruby()
  755.     };
  756.    
  757.     func->Call(m_context->Global(), 1, args);
  758.    
  759.     if(try_catch.HasCaught()) {
  760.         formatException(&try_catch);
  761.        
  762.         return false;
  763.     }
  764. (07:19:13 PM) whitequark: какая мерзость
  765. (07:19:16 PM) whitequark: то есть кофе.
  766. (07:19:18 PM) whitequark: ага
  767. (07:19:24 PM) whitequark: try_catch забавны
  768. (07:19:26 PM) whitequark: *забавный
  769. (07:19:35 PM) Grindars: т.е. ебнутый на всю голову
  770. (07:19:40 PM) Grindars: зато не прыгает, аки руби
  771. (07:19:43 PM) whitequark: угу
  772. (07:19:49 PM) Grindars: и не юзает це++-эксепшны
  773. (07:19:50 PM) whitequark: руби не только для этого прыгает
  774. (07:19:51 PM) whitequark: еще фиберы
  775. (07:19:56 PM) Grindars: в руби пиздец
  776. (07:20:22 PM) whitequark: и лямбды
  777. (07:20:23 PM) whitequark: почему?
  778. (07:20:26 PM) whitequark: там все цивильно
  779. (07:20:36 PM) Grindars: ColdRubyVM: init
  780. coldruby: <compiled>:42: TypeError: Object (function(ruby) {
  781.  var iseq = {
  782.    klass: $c.InstructionSequence,
  783.    info: {
  784.      arg_size:   0,
  785.      local_size: 1,
  786.      stack_max:  2,
  787.  
  788.      catch_table: [
  789.        
  790.      ],
  791.  
  792.      args: {
  793.        argc:  0,
  794.        rest:  -1,
  795.        block: -1,
  796.      },
  797.  
  798.      func:   '<compiled>',
  799.      file:   './hello.rb',
  800.      line:   1,
  801.      path:   '',
  802.  
  803.      type:   'top',
  804.      locals: []
  805.    },
  806.    0: function() {
  807.      var sf = this.context.sf;
  808.      sf.line = 3;
  809.      sf.stack[sf.sp++] = this.builtin.Qnil;
  810.      sf.stack[sf.sp++] = "Hello, World!";
  811.      var args = sf.stack.slice(sf.sp - 1, sf.sp);
  812.      sf.sp -= 1;
  813.      var ret = this.funcall2(sf.stack[--sf.sp] == this.builtin.Qnil ? null : sf.stack[sf.sp], this.symbols[60808], args, null, false);
  814.      sf.stack[sf.sp++] = ret;
  815.      return null;
  816.    }
  817.  };
  818.  
  819.  var new_symbols = { 60808: 'print' };
  820.  for(var k in new_symbols) {
  821.    ruby.symbols[k] = parseInt(ruby.text2sym(new_symbols[k]).value);
  822.  }
  823.  
  824.  var sf_opts = {
  825.    self: ruby.toplevel,
  826.    ddef: ruby.toplevel,
  827.    cref: [ruby.c.Object],
  828.  };
  829.  
  830.  ruby.execute(sf_opts, iseq, []);
  831. })
  832. has no method 'text2sym'
  833.    ruby.symbols[k] = parseInt(ruby.text2sym(new_symbols[k]).value);
  834. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^
  835. Stack trace:
  836. TypeError: Object (function(ruby) {
  837.  var iseq = {
  838.    klass: $c.InstructionSequence,
  839.    info: {
  840.      arg_size:   0,
  841.      local_size: 1,
  842.      stack_max:  2,
  843.  
  844.      catch_table: [
  845.        
  846.      ],
  847.  
  848.      args: {
  849.        argc:  0,
  850.        rest:  -1,
  851.        block: -1,
  852.      },
  853.  
  854.      func:   '<compiled>',
  855.      file:   './hello.rb',
  856.      line:   1,
  857.      path:   '',
  858.  
  859.      type:   'top',
  860.      locals: []
  861.    },
  862.    0: function() {
  863.      var sf = this.context.sf;
  864.      sf.line = 3;
  865.      sf.stack[sf.sp++] = this.builtin.Qnil;
  866.      sf.stack[sf.sp++] = "Hello, World!";
  867.      var args = sf.stack.slice(sf.sp - 1, sf.sp);
  868.      sf.sp -= 1;
  869.      var ret = this.funcall2(sf.stack[--sf.sp] == this.builtin.Qnil ? null : sf.stack[sf.sp], this.symbols[60808], args, null, false);
  870.      sf.stack[sf.sp++] = ret;
  871.      return null;
  872.    }
  873.  };
  874.  
  875.  var new_symbols = { 60808: 'print' };
  876.  for(var k in new_symbols) {
  877.    ruby.symbols[k] = parseInt(ruby.text2sym(new_symbols[k]).value);
  878.  }
  879.  
  880.  var sf_opts = {
  881.    self: ruby.toplevel,
  882.    ddef: ruby.toplevel,
  883.    cref: [ruby.c.Object],
  884.  };
  885.  
  886.  ruby.execute(sf_opts, iseq, []);
  887. })
  888. has no method 'text2sym'
  889.    at <compiled>:42:37
  890. ColdRubyVM: fini
  891.  
  892. (07:20:44 PM) whitequark: мнэээ
  893. (07:20:49 PM) Grindars: ЧЯДНТ?
  894. (07:20:50 PM) whitequark: хммм
  895. (07:20:56 PM) Grindars: ruby = результат create_ruby()
  896. (07:20:58 PM) whitequark: точно нету?
  897. (07:21:03 PM) Grindars: кого?
  898. (07:21:08 PM) whitequark: метода.
  899. (07:21:19 PM) Grindars: $.text2sym = function(name) {
  900.  for(var k in $.symbols) {
  901.    if($.symbols[k] == name) {
  902.      return $.id2sym(k);
  903.    }
  904.  }
  905.  
  906.  var symbol = this.id2sym($.symbols.last--);
  907.  $.symbols[symbol.value] = name;
  908.  
  909.  return symbol;
  910. };
  911. (07:21:26 PM) whitequark: хмм, и правда
  912. (07:21:27 PM) whitequark: аа
  913. (07:21:32 PM) Grindars: а ruby точно унаследовал $?
  914. (07:21:35 PM) whitequark: это потому что сначала тебе надо рантайм захуячить
  915. (07:21:38 PM) whitequark: ну
  916. (07:21:40 PM) Grindars: всмысле?
  917. (07:21:50 PM) whitequark: он определяется внутри рантайма
  918. (07:21:50 PM) Grindars: рантайм я загрузил весь
  919. (07:21:53 PM) whitequark: хмм.
  920. (07:21:53 PM) Grindars: потом create_ruby
  921. (07:21:57 PM) whitequark: а есть там поле builtin?
  922. (07:22:15 PM) Grindars: потом евальнул исходник
  923. (07:22:16 PM) Grindars: потом его вызвал
  924. (07:22:23 PM) whitequark: WORKSFORME...
  925. (07:22:25 PM) Grindars: открылся портал и лезет какая-то хуйня
  926. (07:22:29 PM) whitequark: ага
  927. (07:22:51 PM) Grindars: у тебя ruby не включает в себя методы $
  928. (07:22:59 PM) whitequark:   create_ruby: function() {
  929.    var ruby = {
  930.      __proto__: this,
  931.      context: {
  932.        sf:        null,
  933.      },
  934.      toplevel: {
  935.        klass:             this.internal_constants.Object,
  936.        class_variables:   {},
  937.        ivs:               {},
  938.        toplevel:          true
  939.      }
  940.    };
  941.  
  942.    ruby.define_singleton_method(ruby.toplevel, 'to_s', 0, function(self) {
  943.      return "main";
  944.    });
  945.  
  946.    return ruby;
  947.  },
  948. (07:23:08 PM) Grindars: я вижу __proto__
  949. (07:23:14 PM) whitequark: да.
  950. (07:23:20 PM) whitequark: и у меня это работало
  951. (07:23:27 PM) whitequark: а у тебя почему-то не пашет
  952. (07:23:43 PM) whitequark: господи, какая же мерзость
  953. (07:24:56 PM) Grindars: кажется, я зря в scope загнал
  954. (07:25:31 PM) whitequark: вероятно
  955. (07:25:35 PM) whitequark: $ сдохло?
  956. (07:25:47 PM) Grindars: БУУУУУУМ
  957. (07:25:54 PM) whitequark: мде
  958. (07:25:54 PM) whitequark: это
  959. (07:25:57 PM) whitequark: а почему?
  960. (07:25:57 PM) Grindars: <main>: [BUG] Segmentation fault
  961. ruby 1.9.2p136 (2010-12-25 revision 30365) [i686-linux]
  962.  
  963. -- control frame ----------
  964. c:0001 p:0000 s:0002 b:0002 l:000c44 d:000c44 TOP  
  965. ---------------------------
  966.  
  967. -- C level backtrace information -------------------------------------------
  968. /home/grindars/.rvm/rubies/ruby-1.9.2-p136/lib/libruby.so.1.9(rb_vm_bugreport+0x72) [0xb747e6c2]
  969. /home/grindars/.rvm/rubies/ruby-1.9.2-p136/lib/libruby.so.1.9(+0x56011) [0xb7358011]
  970. /home/grindars/.rvm/rubies/ruby-1.9.2-p136/lib/libruby.so.1.9(rb_bug+0x3a) [0xb735810a]
  971. /home/grindars/.rvm/rubies/ruby-1.9.2-p136/lib/libruby.so.1.9(+0x10812c) [0xb740a12c]
  972. [0xb788940c]
  973. [(nil)]
  974.  
  975. (07:26:00 PM) whitequark: референс же есть
  976. (07:26:06 PM) whitequark: а.
  977. (07:26:14 PM) Grindars: это если убрать scope
  978. (07:26:24 PM) Grindars: стека нету
  979. (07:26:27 PM) Grindars: не существоват
  980. (07:26:46 PM) whitequark: *** libruby detected
  981. (07:27:15 PM) whitequark: о, Order Shipped
  982. (07:27:48 PM) Grindars: Stack-allocated class which sets the execution context for all operations executed within a local scope.
  983. (07:28:54 PM) Grindars: coldruby - это ядреная смесь руби, жс и с++
  984. (07:28:57 PM) Grindars: на стыках лулзы
  985. (07:29:18 PM) whitequark: ага
  986. (07:31:36 PM) Grindars: Exiting the current context restores the context that was in place when entering the current context.
  987. (07:31:46 PM) Grindars: блядь.
  988. (07:31:54 PM) Grindars: я после инита вышел.
  989. (07:31:56 PM) Grindars: руби снессы
  990. (07:32:04 PM) Grindars: *снесся
  991. (07:32:57 PM) Grindars: что делать?
  992. (07:34:36 PM) whitequark: ща
  993. (07:35:01 PM) whitequark: так.
  994. (07:35:06 PM) whitequark: после инита...
  995. (07:35:07 PM) whitequark: ща, гляну
  996. (07:35:45 PM) whitequark: может, делать инит в корне?
  997. (07:36:01 PM) Grindars: тогда инстансы смогут портить друг друга
  998. (07:36:05 PM) whitequark: хмм.
  999. (07:36:15 PM) whitequark: инстансы компиля?
  1000. (07:36:22 PM) whitequark: сделай синглетоном.
  1001. (07:36:22 PM) Grindars: рубей
  1002. (07:36:25 PM) Grindars: нет
  1003. (07:36:29 PM) Grindars: не сделаю
  1004. (07:36:31 PM) whitequark: думаю, иначе никак
  1005. (07:36:31 PM) Grindars: я придумал.
  1006. (07:36:33 PM) whitequark: хм
  1007. (07:36:34 PM) whitequark: ну?
  1008. (07:37:59 PM) Grindars: если грубо,
  1009. Local<Object> global = context.Global();
  1010. context.DetachGlobal();
  1011. context.Exit();
  1012. context.ReattachGlobal(global);
  1013. (07:39:04 PM) whitequark: извращенец
  1014. (07:40:01 PM) whitequark: слух, можно ресайзить подмонтированную е3 на лвм?
  1015. (07:40:10 PM) Grindars: да
  1016. (07:40:26 PM) Grindars: resize2fs
  1017. (07:40:31 PM) whitequark: да знаю
  1018. (07:40:37 PM) whitequark: тут один хуй гонит, что может все сломаться
  1019. (07:40:40 PM) whitequark: но по-моему пиздит
  1020. (07:40:43 PM) Grindars: может
  1021. (07:40:46 PM) Grindars: если процесс прервется
  1022. (07:40:49 PM) whitequark: именно из-за лвм
  1023. (07:40:52 PM) Grindars: -KILL, -PWR, etc
  1024. (07:40:54 PM) whitequark: а не само по себе
  1025. (07:40:56 PM) Grindars: нет, из-за лвм не может
  1026. (07:40:56 PM) whitequark: -PWR?)
  1027. (07:41:05 PM) whitequark: знаю, что такой есть
  1028. (07:41:09 PM) whitequark: он разве KILL по дефолту?
  1029. (07:41:11 PM) whitequark: игнор же
  1030. (07:41:14 PM) whitequark: SIGIGN, короче
  1031. (07:41:33 PM) Grindars: SIGPWR      29,30,19    Term    Power failure (System V)
  1032.  
  1033. (07:41:36 PM) Grindars: он Term
  1034. (07:41:42 PM) whitequark: хм.
  1035. (07:41:45 PM) whitequark: надо же
  1036. (07:41:51 PM) whitequark: то есть убьет все, кроме инита?
  1037. (07:42:11 PM) Grindars: линух не рассылает его сам
  1038. (07:42:13 PM) whitequark: а
  1039. (07:42:38 PM) Grindars: пдп-11 вырубалась через <10 сек после SIGPWR
  1040. (07:42:39 PM) Grindars: причем память сохранялась, лол.
  1041. (07:42:47 PM) whitequark: это как?
  1042. (07:42:58 PM) Grindars: core memory
  1043. (07:43:02 PM) Grindars: ей похуй.
  1044. (07:43:08 PM) whitequark: ее не надо обновлять разве?
  1045. (07:43:11 PM) Grindars: неа
  1046. (07:43:13 PM) whitequark: ни хуя себе там был ток записи тогда
  1047. (07:43:17 PM) Grindars: амперы
  1048. (07:43:21 PM) whitequark: ага
  1049. (07:43:30 PM) Grindars: проволочки перегорали, если читать одну ячейку
  1050. (07:43:33 PM) whitequark: ага
  1051. (07:43:35 PM) whitequark: HLT
  1052. (07:43:38 PM) whitequark: HCF, точнее
  1053. (07:43:51 PM) whitequark: LTLTLTLTLTLTLTLTLTLTLTLTLTLTLTLTLTLT
  1054. (07:43:54 PM) whitequark: ня.
  1055. (07:44:07 PM) Grindars: как сказать сраному руби
  1056. (07:44:12 PM) Grindars: чтобы не трогал мои сигналы?
  1057. (07:44:15 PM) Grindars: не хукал их, блядь
  1058. (07:44:15 PM) whitequark: хм...
  1059. (07:44:18 PM) Grindars: заебал
  1060. (07:44:19 PM) whitequark: ща
  1061. (07:44:22 PM) Grindars: что он доебался до них
  1062. (07:47:09 PM) whitequark: че-то жруби смешался со всем остальным
  1063. (07:47:26 PM) whitequark: в rxr
  1064. (07:47:29 PM) whitequark: пересоздать базу чтоль
  1065. (07:47:33 PM) Grindars: а я тебе говорил
  1066. (07:47:38 PM) whitequark: да я знаю
  1067. (07:47:41 PM) whitequark: думал, крон поправит
  1068. (07:47:43 PM) whitequark: не поправил.
  1069. (07:48:25 PM) whitequark: хм
  1070. (07:48:31 PM) whitequark: он всегда хукает сигналы, походу
  1071. (07:48:31 PM) whitequark: ща
  1072. (07:48:42 PM) whitequark: ага
  1073. (07:48:45 PM) whitequark: ему для стекоебства нужно
  1074. (07:49:13 PM) whitequark: да.
  1075. (07:49:23 PM) whitequark: так
  1076. (07:49:26 PM) whitequark: ща снесу базу, наверное
  1077. (07:50:06 PM) Grindars: я убрал вход-выход из контекста: вход при старте, выход при завершении колдруби для теста
  1078. (07:50:08 PM) Grindars: толку ноль.
  1079. (07:50:20 PM) whitequark: блин
  1080. (07:50:23 PM) whitequark: у меня ж работало
  1081. (07:50:25 PM) whitequark: что изменилось?
  1082. (07:50:34 PM) Grindars: то, что у меня другой двиг?
  1083. (07:50:38 PM) whitequark: эээ
  1084. (07:50:40 PM) whitequark: v8?
  1085. (07:50:43 PM) Grindars: в8
  1086. (07:50:46 PM) Grindars: обертка другая
  1087. (07:50:49 PM) whitequark: хм.
  1088. (07:50:57 PM) whitequark: вот и надо понять, где она юзает его не так
  1089. (07:53:19 PM) whitequark: так
  1090. (07:53:21 PM) whitequark: обновляю базу
  1091. (07:53:40 PM) Grindars: ruby.text2sym _есть_
  1092. (07:53:44 PM) Grindars: я проверил из натива
  1093. (07:53:45 PM) whitequark: хм.
  1094. (07:53:48 PM) whitequark: так что ему не нравится?
  1095. (07:53:59 PM) Grindars: а this случайно не надо в ruby,
  1096. (07:54:01 PM) Grindars: *?
  1097. (07:54:03 PM) whitequark: хммм
  1098. (07:54:07 PM) whitequark: что?
  1099. (07:54:49 PM) Grindars: может, хуевый хендл?..
  1100. (07:54:53 PM) whitequark: хм.
  1101. (07:55:38 PM) whitequark: хз
  1102. (07:55:41 PM) whitequark: я купил вот это
  1103. (07:55:42 PM) whitequark: http://www.dealextreme.com/p/10544
  1104. (07:56:09 PM) Grindars: мда
  1105. (07:56:11 PM) whitequark: подарю одной знакомой. скажу, что это внешние, хехе
  1106. (07:56:17 PM) whitequark: хочу посмотреть на ее лицо
  1107. (07:56:30 PM) Grindars: напомнило xkcd
  1108. (07:56:33 PM) whitequark: ага
  1109. (07:56:50 PM) whitequark: аж две штуки
  1110. (07:56:59 PM) whitequark: лол, какая упаковка
  1111. (07:56:59 PM) whitequark: http://www.dealextreme.com/feedbacks/browseCustomerPhotos.dx/sku.10544~id.47534
  1112. (07:57:00 PM) Grindars: как определить тип переменной в жс
  1113. (07:57:03 PM) whitequark: type obj
  1114. (07:57:10 PM) Grindars: если вывода нет?
  1115. (07:57:18 PM) whitequark: запиши в переменную
  1116. (07:57:19 PM) whitequark: ЛОЛ
  1117. (07:57:20 PM) Grindars: только исключения
  1118. (07:57:22 PM) whitequark: choking hazard
  1119. (07:57:26 PM) whitequark: это же как надо жрать!!
  1120. (07:58:35 PM) Grindars: как мне кинуть исключение с типом переменной?
  1121. (07:58:44 PM) whitequark: throw (type obj);
  1122. (07:58:49 PM) whitequark: и все
  1123. (07:58:49 PM) Grindars: throw new error
  1124. (07:58:56 PM) Grindars: нет, это це
  1125. (07:59:01 PM) whitequark: throw new error; fuck with yourself
  1126. (07:59:04 PM) Grindars: блядь, слишком много языком в проекте
  1127. (07:59:07 PM) Grindars: *языков
  1128. (07:59:15 PM) whitequark: ruby, js, c++, c
  1129. (07:59:21 PM) whitequark: полиглотский проект )
  1130. (07:59:30 PM) Grindars: coldruby: <compiled>:2: SyntaxError: Unexpected identifier
  1131.  throw (type ruby);
  1132. ~~~~~~~~~~~~~~^^^^
  1133. Stack trace:
  1134. SyntaxError: Unexpected identifier
  1135.  
  1136. (07:59:53 PM) whitequark: хм...
  1137. (07:59:58 PM) whitequark: typeof
  1138. (08:00:19 PM) Grindars: terminate called after throwing an instance of 'std::logic_error'
  1139.  what():  basic_string::_S_construct null not valid
  1140. Аварийный останов
  1141.  
  1142. (08:00:20 PM) whitequark: https://github.com/blog/843-the-merge-button
  1143. (08:00:23 PM) whitequark: еб.
  1144. (08:00:26 PM) whitequark: what()?!
  1145. (08:00:51 PM) Grindars: я у колдруби пока видел четыре разных вида исключений.
  1146. (08:03:46 PM) Grindars: coldruby: <compiled>:2: string
  1147.  throw (typeof ruby);
  1148. ~~^
  1149.  
  1150. (08:03:50 PM) Grindars: ruby - строка
  1151. (08:03:58 PM) Grindars: руби, блядь, строка
  1152. (08:03:58 PM) whitequark: бред
  1153. (08:04:00 PM) Grindars: какого хуя
  1154. (08:04:06 PM) Grindars: #define STD_STRING(s) ({v8::String::Utf8Value utf8_val(s); *utf8_val ? std::string(*utf8_val) : std::string(); })
  1155. (08:04:13 PM) Grindars: какая-то функциональщина в моем си
  1156. (08:04:16 PM) whitequark: ага
  1157. (08:04:24 PM) Grindars: кажется, я повредил мозг
  1158. (08:05:04 PM) Grindars: а разве typeof null == null?
  1159. (08:05:09 PM) Grindars: *== object?
  1160. (08:05:14 PM) whitequark: object
  1161. (08:05:25 PM) Grindars: у в8 нулл глобальный
  1162. (08:05:28 PM) Grindars: можно взять ссылку
  1163. (08:05:30 PM) Grindars: переебать его
  1164. (08:05:36 PM) Grindars: и null останется таким
  1165. (08:05:41 PM) whitequark: еб.
  1166. (08:05:47 PM) Grindars: так же и true/false
  1167. (08:06:20 PM) Grindars: coldruby: <compiled>:2: (function(ruby) {
  1168.  throw (ruby);
  1169.  var iseq = {
  1170.    klass: $c.InstructionSequence,
  1171.    info: {
  1172.      arg_size:   0,
  1173.      local_size: 1,
  1174.      stack_max:  2,
  1175.  
  1176.      catch_table: [
  1177.        
  1178.      ],
  1179.  
  1180.      args: {
  1181.        argc:  0,
  1182.        rest:  -1,
  1183.        block: -1,
  1184.      },
  1185.  
  1186.      func:   '<compiled>',
  1187.      file:   './hello.rb',
  1188.      line:   1,
  1189.      path:   '',
  1190.  
  1191.      type:   'top',
  1192.      locals: []
  1193.    },
  1194.    0: function() {
  1195.      var sf = this.context.sf;
  1196.      sf.line = 3;
  1197.      sf.stack[sf.sp++] = this.builtin.Qnil;
  1198.      sf.stack[sf.sp++] = "Hello, World!";
  1199.      var args = sf.stack.slice(sf.sp - 1, sf.sp);
  1200.      sf.sp -= 1;
  1201.      var ret = this.funcall2(sf.stack[--sf.sp] == this.builtin.Qnil ? null : sf.stack[sf.sp], this.symbols[60808], args, null, false);
  1202.      sf.stack[sf.sp++] = ret;
  1203.      return null;
  1204.    }
  1205.  };
  1206.  
  1207.  var new_symbols = { 60808: 'print' };
  1208.  for(var k in new_symbols) {
  1209.    ruby.symbols[k] = parseInt(ruby.text2sym(new_symbols[k]).value);
  1210.  }
  1211.  
  1212.  var sf_opts = {
  1213.    self: ruby.toplevel,
  1214.    ddef: ruby.toplevel,
  1215.    cref: [ruby.c.Object],
  1216.  };
  1217.  
  1218.  ruby.execute(sf_opts, iseq, []);
  1219. })
  1220.  
  1221.  throw (ruby);
  1222. ~~^
  1223.  
  1224. (08:06:27 PM) Grindars: что за хуйня
  1225. (08:06:31 PM) Grindars: почему руби - quine
  1226. (08:06:38 PM) whitequark: quine?!
  1227. (08:06:51 PM) Grindars: да
  1228. (08:06:53 PM) whitequark: чиво?
  1229. (08:06:58 PM) whitequark: может, ты его не съевалил?
  1230. (08:07:12 PM) Grindars: а как тогда лямбда исполняется?
  1231. (08:07:17 PM) whitequark: хм.
  1232. (08:07:20 PM) whitequark: лямбда.
  1233. (08:07:25 PM) Grindars: я ее евальнул и вызвал
  1234. (08:07:30 PM) whitequark: оно же падает
  1235. (08:07:33 PM) Grindars: неа
  1236. (08:07:35 PM) Grindars: уже нет
  1237. (08:07:41 PM) Grindars: it's stable
  1238. (08:08:05 PM) Grindars:     v8::Handle<v8::Value> args[] = {
  1239.         ruby->ruby()
  1240.     };
  1241.    
  1242.     func->Call(m_context->Global(), 1, args);
  1243. (08:09:42 PM) Grindars: сраные ссылки
  1244. (08:09:54 PM) Grindars: я поместил лямбду в ту же переменную, куда поместил руби
  1245. (08:10:00 PM) whitequark: вот.
  1246. (08:10:16 PM) Grindars: погоди, что?!
  1247. (08:11:43 PM) Grindars: <main>: [BUG] Segmentation fault
  1248. ruby 1.9.2p136 (2010-12-25 revision 30365) [i686-linux]
  1249.  
  1250. -- control frame ----------
  1251. c:0001 p:0000 s:0002 b:0002 l:0009c4 d:0009c4 TOP  
  1252. ---------------------------
  1253.  
  1254. -- C level backtrace information -------------------------------------------
  1255. /home/grindars/.rvm/rubies/ruby-1.9.2-p136/lib/libruby.so.1.9(rb_vm_bugreport+0x72) [0xb73406c2]
  1256. /home/grindars/.rvm/rubies/ruby-1.9.2-p136/lib/libruby.so.1.9(+0x56011) [0xb721a011]
  1257. /home/grindars/.rvm/rubies/ruby-1.9.2-p136/lib/libruby.so.1.9(rb_bug+0x3a) [0xb721a10a]
  1258. /home/grindars/.rvm/rubies/ruby-1.9.2-p136/lib/libruby.so.1.9(+0x10812c) [0xb72cc12c]
  1259. [0xb774b40c]
  1260.  
  1261. [NOTE]
  1262. You may have encountered a bug in the Ruby interpreter or extension libraries.
  1263. Bug reports are welcome.
  1264. For details: http://www.ruby-lang.org/bugreport.html
  1265.  
  1266. (08:11:47 PM) Grindars: опять.
  1267. (08:11:53 PM) whitequark: хм.
  1268. (08:11:55 PM) whitequark: и почему же?
  1269. (08:12:01 PM) Grindars: без понятия
  1270. (08:12:04 PM) Grindars: я + гц = хуйня
  1271. (08:13:38 PM) Grindars: coldruby: <compiled>:42: TypeError: Object . has no method 'text2sym'
  1272.    ruby.symbols[k] = parseInt(ruby.text2sym(new_symbols[k]).value);
  1273. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^
  1274. Stack trace:
  1275. TypeError: Object . has no method 'text2sym'
  1276.    at <compiled>:42:37
  1277.  
  1278. (08:13:42 PM) Grindars: обжект кто?
  1279. (08:14:06 PM) Grindars: аа, я затер лямбду чем-то
  1280. (08:14:52 PM) whitequark: опять.
  1281. (08:14:55 PM) whitequark: еб...
  1282. (08:15:08 PM) whitequark: так
  1283. (08:18:53 PM) Grindars: нашел истинную причину.
  1284. (08:19:10 PM) Grindars: Persistent (Handle< S > that)
  1285.     "Casts" a plain handle which is known to be a persistent handle to a persistent handle.
  1286.  
  1287. какой блядь мудак сделал так.
  1288. (08:19:22 PM) Grindars: чтобы создать постоянный хендл, надо v8::Persistent<v8::Object>::New(ruby)
  1289. (08:19:32 PM) Grindars: иначе хендл будет показывать в рандомный объект на куче
  1290. (08:19:40 PM) Grindars: и будет лезть разная хуйня, иногда правильная
  1291. (08:20:17 PM) Grindars: отсюда и креши - иногда указывает хуй знает куда
  1292. (08:20:28 PM) Grindars: костыли тоже не нужны, context-ы заработали
  1293. (08:21:49 PM) Grindars:
  1294. coldruby: 01_ruby.js:990: ReferenceError: $i is not defined
  1295.          } else throw e; // dooooown to the basement
  1296. ~~~~~~~~~~~~~~~~~^
  1297. Stack trace:
  1298. ReferenceError: $i is not defined
  1299.    at Object.<anonymous> (06_kernel.js:103:5)
  1300.    at Object.execute (01_ruby.js:1058:27)
  1301.    at Object.funcall2 (01_ruby.js:701:17)
  1302.    at Object.<anonymous> (<compiled>:34:22)
  1303.    at Object.execute (01_ruby.js:984:33)
  1304.    at <compiled>:51:8
  1305.  
  1306. (08:27:08 PM) Grindars has gone away.
  1307. (08:27:08 PM) Grindars has become idle.
  1308. (08:30:45 PM) whitequark: $ grep '$i' runtime/ -Rn
  1309. runtime/20_time.js:4:  return $.builtin.make_float($i.time_now());
  1310. runtime/06_kernel.js:78:// Requires interpreter support at $i
  1311. runtime/06_kernel.js:93:    $i.print(this.funcall(args[i], 'to_s') + "\n");
  1312. runtime/06_kernel.js:96:    $i.print("\n");
  1313. runtime/06_kernel.js:103:    $i.print(this.funcall(args[i], 'to_s'));
  1314. runtime/06_kernel.js:109:  var str = $i.gets();
  1315.  
  1316. (08:31:43 PM) whitequark: я в душ.
  1317. (08:49:10 PM) Grindars is no longer idle.
  1318. (08:49:11 PM) Grindars is no longer away.
  1319. (08:49:21 PM) Grindars: а я оттуда
  1320. (08:54:30 PM) whitequark: так
  1321. (08:55:12 PM) Grindars: я ща хочу попробовать сделать так, чтобы информация о строках из руби проходила в в8
  1322. (08:55:27 PM) Grindars: чтобы в трейсе было file.rb:2, а не <compiled>:666
  1323. (08:55:50 PM) whitequark: ага
  1324. (08:55:55 PM) whitequark: вроде, в ребилженной базе говна нет
  1325. (08:56:00 PM) whitequark: интересно, почему оно сломалось.
  1326. (08:56:05 PM) Grindars: завтра опять refactoring day, а потом коммит
  1327. (08:56:35 PM) Grindars:     0: function() {
  1328.      var sf = this.context.sf;
  1329.      sf.line = 3;
  1330.      sf.stack[sf.sp++] = this.builtin.Qnil;
  1331.      sf.stack[sf.sp++] = "Hello, World!";
  1332.      var args = sf.stack.slice(sf.sp - 1, sf.sp);
  1333.      sf.sp -= 1;
  1334.      var ret = this.funcall2(sf.stack[--sf.sp] == this.builtin.Qnil ? null : sf.stack[sf.sp], this.symbols[60808], args, null, false);
  1335.      sf.stack[sf.sp++] = ret;
  1336.      return null;
  1337.    }
  1338. (08:56:51 PM) whitequark: пашет?
  1339. (08:56:54 PM) Grindars: нет
  1340. (08:57:00 PM) Grindars: я смотрю на информацию о строках
  1341. (08:57:03 PM) whitequark: а.
  1342. (08:57:07 PM) whitequark: Lua built more than expected in the area that he has heard. Rubything to replace.
  1343. (08:57:09 PM) whitequark: что?!
  1344. (08:57:17 PM) whitequark: Ruby to replace?!
  1345. (08:57:25 PM) Grindars: угу, замена руби
  1346. (08:57:40 PM) Grindars: предполагаю, в ембеддинге (как железки, так и софт)
  1347. (08:57:47 PM) whitequark: не
  1348. (08:57:48 PM) whitequark: Rite же
  1349. (08:57:53 PM) Grindars: блядь, где он?
  1350. (08:57:57 PM) Grindars: через N лет будет?
  1351. (08:57:57 PM) whitequark: он его пилит
  1352. (08:57:58 PM) whitequark: сказал же
  1353. (08:57:59 PM) whitequark: нет
  1354. (08:58:00 PM) Grindars: вот-вот
  1355. (08:58:00 PM) whitequark: есть план
  1356. (08:58:02 PM) Grindars: ты бы попробовал куда-нибудь MRI заембеддить
  1357. (08:58:06 PM) whitequark: за который ему платят бабло
  1358. (08:58:06 PM) Grindars: а потом lua
  1359. (08:58:08 PM) whitequark: и он пилит.
  1360. (08:58:16 PM) whitequark: будет в середине-конце этого года
  1361. (08:58:17 PM) Grindars: после луа MRI - сущий ад
  1362. (08:58:28 PM) Grindars: и израиль
  1363. (08:58:59 PM) whitequark: гы
  1364. (08:59:05 PM) whitequark: twitter.com/matz_translated
  1365. (08:59:06 PM) whitequark: лол
  1366. (08:59:18 PM) whitequark: 22 feb: RiteVM GC, complete the coding for the time being. That it will still have bugs, but I'm running look.
  1367. (08:59:40 PM) whitequark: т.е. два месяца назад закончил г
  1368. (08:59:41 PM) whitequark: *гц
  1369. (08:59:52 PM) Grindars: у в8 все равно сосет
  1370. (09:00:29 PM) whitequark: rite?
  1371. (09:00:31 PM) Grindars: да
  1372. (09:00:35 PM) whitequark: не обязательно
  1373. (09:00:37 PM) whitequark: ты ж еще не видел
  1374. (09:00:41 PM) Grindars: если не будет сосать, то гугл купит matz'а
  1375. (09:00:48 PM) whitequark: возможно
  1376. (09:01:00 PM) whitequark: Programmers saying "no bugs malloc" may use the malloc is replaced code compilers, operating systems, and others.
  1377. (09:01:01 PM) whitequark: хм.
  1378. (09:01:12 PM) Grindars: это чем переведено?
  1379. (09:01:15 PM) Grindars: смысл ускользает
  1380. (09:01:16 PM) whitequark: это человек
  1381. (09:01:18 PM) whitequark: гугл переводит хуже
  1382. (09:01:32 PM) Grindars:  may use the malloc is replaced code
  1383. (09:01:36 PM) whitequark: ага
  1384. (09:01:36 PM) Grindars: ебнуто как-то
  1385. (09:01:37 PM) whitequark: хуета
  1386. (09:01:50 PM) whitequark: ы
  1387. (09:01:50 PM) whitequark: http://cho45.stfuawsc.com/jsdeferred/doc/intro.html
  1388. (09:02:07 PM) Grindars: не отвлекай меня на японскую хуиту
  1389. (09:02:25 PM) Grindars: так
  1390. (09:02:39 PM) Grindars: колдруби помещает информацию о строках в свой стек, так?
  1391. (09:03:18 PM) whitequark: хм
  1392. (09:03:24 PM) whitequark: да
  1393. (09:03:26 PM) whitequark: sf.line
  1394. (09:03:35 PM) whitequark: это
  1395. (09:03:42 PM) whitequark: у тебя какое исключение, нативное?
  1396. (09:03:51 PM) Grindars: да
  1397. (09:04:08 PM) whitequark: хмм
  1398. (09:04:12 PM) whitequark: а зачем тебе строка тогда?
  1399. (09:04:16 PM) whitequark: оно же строки руби держит\
  1400. (09:04:27 PM) Grindars: смотри
  1401. (09:04:38 PM) Grindars: ReferenceError: $i is not defined
  1402.    at Object.<anonymous> (06_kernel.js:103:5)
  1403.    at Object.execute (01_ruby.js:1058:27)
  1404.    at Object.funcall2 (01_ruby.js:701:17)
  1405.    at Object.<anonymous> (<compiled>:34:22)
  1406.    at Object.execute (01_ruby.js:984:33)
  1407.    at <compiled>:51:8
  1408.  
  1409. (09:04:42 PM) whitequark: хм
  1410. (09:04:48 PM) Grindars: я хочу развернуть стек колдруби и сделать hello.rb:3
  1411. (09:04:52 PM) whitequark: хмммм
  1412. (09:04:54 PM) whitequark: ну давай
  1413. (09:05:03 PM) whitequark: а как ты отмапишь одно к другому?
  1414. (09:05:08 PM) Grindars: вот думаю
  1415. (09:05:11 PM) whitequark: хотя, понятно как
  1416. (09:05:13 PM) whitequark: ща
  1417. (09:05:32 PM) Grindars: я могу фреймы жс получить.
  1418. (09:05:32 PM) Grindars: http://izs.me/v8-docs/classv8_1_1StackFrame.html
  1419. (09:07:11 PM) whitequark: хмм
  1420. (09:07:16 PM) whitequark: фреймы жс...
  1421. (09:07:18 PM) whitequark: а толку?
  1422. (09:07:24 PM) whitequark: фреймы руби к ним не привязаныэ
  1423. (09:07:25 PM) Grindars: есть такая мысль
  1424. (09:07:28 PM) whitequark: смотри, как разворачиваешь.
  1425. (09:07:31 PM) whitequark: ща объясню
  1426. (09:07:39 PM) whitequark: у тебя есть ruby.context.sf
  1427. (09:07:40 PM) Grindars: объясни, может твоя идея лучше, чем гдб
  1428. (09:07:46 PM) whitequark: это односвязный список фреймов
  1429. (09:07:51 PM) Grindars: разве sf - это не только последний фрейм?
  1430. (09:07:51 PM) whitequark: (sf.parent.parent.....)
  1431. (09:08:00 PM) whitequark: разворачивать так
  1432. (09:08:04 PM) Grindars: не вижу инит парента
  1433. (09:08:11 PM) whitequark: он в кишках, не важно
  1434. (09:08:16 PM) whitequark: нативные и скомпиленные фреймы немного отличаются
  1435. (09:08:20 PM) whitequark: я скажу, как
  1436. (09:08:29 PM) whitequark: для обоих можно извлечь информацию о строках
  1437. (09:08:44 PM) whitequark: вот, бегаешь и составляешь список
  1438. (09:08:55 PM) Grindars: у меня будет... список строк руби.
  1439. (09:08:59 PM) whitequark: ага
  1440. (09:09:02 PM) Grindars: мне надо замапить его на строки жс
  1441. (09:09:06 PM) whitequark: хм.
  1442. (09:09:12 PM) Grindars: к ближайшему вверх
  1443. (09:09:39 PM) Grindars: т.е. если строка руби 1 на строке жс 10 и исключение на строке 15, то вывожу hello.rb:1+5
  1444. (09:09:43 PM) Grindars: аки гдб
  1445. (09:10:07 PM) whitequark: ага
  1446. (09:10:23 PM) Grindars: но как мне найти строку, на которой создан фрейм?..
  1447. (09:10:28 PM) Grindars: жсовую
  1448. (09:10:28 PM) whitequark: без понятия
  1449. (09:11:10 PM) whitequark: фреймы отличаются вот чем
  1450. (09:11:18 PM) whitequark: у рубевских typeof sf.iseq == "object"
  1451. (09:11:23 PM) whitequark: у нативных "function"
  1452. (09:11:36 PM) Grindars: и что мне до твоего iseq?
  1453. (09:11:41 PM) whitequark: эм
  1454. (09:11:41 PM) Grindars: мне строки давай же
  1455. (09:11:47 PM) whitequark: а еще в нем есть .line
  1456. (09:11:54 PM) whitequark: в котором находится последняя выполненная рубистрока
  1457. (09:12:49 PM) Grindars: а если я поставлю бряк на доступ к фрейму
  1458. (09:12:56 PM) whitequark: хм
  1459. (09:13:00 PM) whitequark: и что?
  1460. (09:13:06 PM) Grindars: и когда вывалится - вытащу верхний фрейм
  1461. (09:13:08 PM) Grindars: а там жс-строка
  1462. (09:13:14 PM) whitequark: мнээээ
  1463. (09:13:21 PM) whitequark: этих доступов ОЧЕНЬ МНОГО
  1464. (09:13:36 PM) Grindars: тогда...
  1465. (09:13:48 PM) Grindars: инициализировать .js_line = N в кодогенераторе
  1466. (09:13:51 PM) Grindars: лол костыль
  1467. (09:14:02 PM) whitequark: чиво?
  1468. (09:14:11 PM) whitequark: не, че-то я не въеб
  1469. (09:14:20 PM) whitequark: у тебя ж в трейсе есть строка в жс
  1470. (09:14:21 PM) whitequark: не?
  1471. (09:14:24 PM) Grindars: да
  1472. (09:14:26 PM) whitequark: ну вот
  1473. (09:14:29 PM) whitequark: зачем тебе еще одна?
  1474. (09:14:44 PM) Grindars: как я найду ближайшую к искомой строке строку руби?
  1475. (09:14:50 PM) whitequark: эм
  1476. (09:14:56 PM) whitequark: просто посмотри в стековый фрейм.
  1477. (09:15:00 PM) whitequark: там уже лежит ближайшая
  1478. (09:15:04 PM) Grindars: неа
  1479. (09:15:07 PM) whitequark: почему?
  1480. (09:15:07 PM) Grindars: там лежит последняя
  1481. (09:15:33 PM) Grindars: ReferenceError: $i is not defined
  1482.    at Object.<anonymous> (06_kernel.js:103:5)
  1483.    at Object.execute (01_ruby.js:1058:27)
  1484.    at Object.funcall2 (01_ruby.js:701:17)
  1485.    at Object.<anonymous> (<compiled>:66:26)
  1486.    at Object.execute (01_ruby.js:984:33)
  1487.    at Object.funcall2 (01_ruby.js:701:17)
  1488.    at Object.<anonymous> (<compiled>:80:22)
  1489.    at Object.execute (01_ruby.js:984:33)
  1490.    at <compiled>:97:8
  1491.  
  1492. там может быть и больше лулзов
  1493. (09:15:47 PM) whitequark: ну да, последняя
  1494. (09:15:51 PM) whitequark: чем она не ближайшая?
  1495. (09:16:02 PM) Grindars: а я хочу найти строку руби для <compiled>:80:22)
  1496. (09:16:26 PM) whitequark: ну да
  1497. (09:16:28 PM) whitequark: отлично
  1498. (09:16:32 PM) Grindars: и в фрейме не та.
  1499. (09:16:35 PM) whitequark: почему?
  1500. (09:16:41 PM) whitequark: просто выйди на фрейм выше
  1501. (09:16:42 PM) whitequark: там будет та.
  1502. (09:16:49 PM) Grindars: откуда я знаю, какой мне нужен фрейм?
  1503. (09:16:56 PM) whitequark: а ты пропускай не-нативные
  1504. (09:17:02 PM) whitequark: т.е. жсные
  1505. (09:17:05 PM) Grindars: не скомпилированные.
  1506. (09:17:07 PM) Grindars: не <compiled>
  1507. (09:17:08 PM) whitequark: да
  1508. (09:17:20 PM) whitequark: просто каждый <compiled> заменяешь на file:line из фрейма
  1509. (09:17:27 PM) Grindars: а там не может быть лишних лямбд и чего-нибудь еще, способного испортить трейс?
  1510. (09:17:32 PM) whitequark: и идешь к следующему фрейму с typeof iseq == "object"
  1511. (09:17:33 PM) whitequark: хмм
  1512. (09:17:36 PM) whitequark: нет
  1513. (09:17:46 PM) whitequark: в силу того, как оно работает
  1514. (09:17:57 PM) Grindars: число compiled-фреймов всегда == глубине виртуального стека руби?
  1515. (09:18:05 PM) Grindars: (рут не считаем)
  1516. (09:18:20 PM) whitequark: всегда == количеству записей с typeof iseq == "object"
  1517. (09:18:24 PM) whitequark: по определению
  1518. (09:18:27 PM) whitequark: оно так работает.
  1519. (09:18:30 PM) Grindars: крутота
  1520. (09:18:38 PM) Grindars: стек может повредиться?
  1521. (09:18:40 PM) whitequark: нет
  1522. (09:18:50 PM) whitequark: то есть может, но не эта часть
  1523. (09:19:00 PM) whitequark: это, скорее, список фреймов, а не сам стек
  1524. (09:19:02 PM) Grindars: Unwinding ruby stack, please wait a few hours...
  1525. (09:19:05 PM) whitequark: гм.
  1526. (09:19:07 PM) whitequark: почему?
  1527. (09:19:15 PM) Grindars: например, циклическая ссылка, лол
  1528. (09:19:23 PM) Grindars: или просто рельсы
  1529. (09:19:31 PM) Grindars: у которых уровни стека руби измеряются сотнями
  1530. (09:19:32 PM) whitequark: какая еще циклическая ссылка...
  1531. (09:19:35 PM) Grindars: а тут будут тысячи
  1532. (09:19:39 PM) whitequark: почему тысячи?
  1533. (09:19:43 PM) whitequark: будет ровно столько же
  1534. (09:19:47 PM) whitequark: потому что работает так же
  1535. (09:19:52 PM) whitequark: один в один как у мри
  1536. (09:20:00 PM) Grindars: я имею в виду уровни стека JS
  1537. (09:20:04 PM) whitequark: мой стек — это калька
  1538. (09:20:04 PM) whitequark: а
  1539. (09:20:12 PM) whitequark: здесь в три-четыре раза больше.
  1540. (09:20:13 PM) Grindars: у него исключения и так медленные до жути
  1541. (09:20:22 PM) whitequark: да
  1542. (09:20:26 PM) whitequark: я уберу их к ебеням
  1543. (09:20:30 PM) whitequark: т.е. не совсем
  1544. (09:20:33 PM) Grindars: ээ, не надо
  1545. (09:20:37 PM) whitequark: развертывание сделаю не исключениями
  1546. (09:20:37 PM) Grindars: оставь как есть
  1547. (09:20:39 PM) whitequark: а хитрыми return
  1548. (09:20:44 PM) Grindars: исключения не должны быть быстрыми
  1549. (09:20:53 PM) whitequark: они не должны занимать по 0.1 секунды, блядь
  1550. (09:20:59 PM) Grindars: исключение = пиздец, при нормальной работает исключений быть не должно вовсе
  1551. (09:21:00 PM) whitequark: ну, 0.01, если одна штука
  1552. (09:21:08 PM) whitequark: так еб
  1553. (09:21:11 PM) whitequark: не только исключения
  1554. (09:21:16 PM) whitequark: еще иногда break и return
  1555. (09:21:19 PM) whitequark: и ensure тоже
  1556. (09:21:25 PM) Grindars: ты их через исключения сделал?
  1557. (09:21:32 PM) whitequark: не я
  1558. (09:21:34 PM) whitequark: а в руби так
  1559. (09:21:40 PM) Grindars: matz ебанутый
  1560. (09:21:43 PM) whitequark: ensure ладно, без исключений оно не throw-ается
  1561. (09:21:44 PM) whitequark: не
  1562. (09:21:44 PM) Grindars: бобер-извращенец
  1563. (09:21:48 PM) Grindars: у него исключения ГМ
  1564. (09:21:48 PM) whitequark: не все break и return
  1565. (09:21:52 PM) whitequark: а только из вложенных лямбд
  1566. (09:21:55 PM) whitequark: потому что иначе никак
  1567. (09:22:08 PM) whitequark: но некоторые да, сделаны так.
  1568. (09:22:16 PM) whitequark: обычные нет, просто байткодом
  1569. (09:22:33 PM) Grindars: статический режим отделился.
  1570. (09:22:41 PM) whitequark: хм?
  1571. (09:22:49 PM) whitequark: ктоа?
  1572. (09:22:54 PM) Grindars: -s
  1573. (09:23:01 PM) whitequark: в каком плане отделился?
  1574. (09:23:18 PM) Grindars: ColdRubyVM научился вызывать RubyCompiler, когда ему надо
  1575. (09:23:22 PM) whitequark: аа
  1576. (09:23:25 PM) whitequark: гуд
  1577. (09:23:55 PM) whitequark: я еще compile.rb в lib/coldruby перекинул
  1578. (09:24:01 PM) whitequark: потому что он больше не +x
  1579. (09:24:18 PM) Grindars:     ColdRuby *createRuby();
  1580.    
  1581.     bool runRuby(ColdRuby *ruby, const std::string &code, const std::string &file);
  1582.  
  1583. что лучше: так или ruby->run(code, file)? code - код руби, плюс хелпер run(file)
  1584. (09:24:25 PM) whitequark: хмм
  1585. (09:24:46 PM) whitequark: не понял вопроса
  1586. (09:24:46 PM) Grindars: если перемещу в ColdRuby - все равно будет обертка над VM
  1587. (09:24:58 PM) whitequark: я бы сделал в колдрубе, наверное
  1588. (09:25:19 PM) Grindars: тогда им придется стать друзьями
  1589. (09:25:52 PM) whitequark: ой
  1590. (09:25:54 PM) whitequark: это плохо
  1591. (09:25:57 PM) whitequark: делай без друзей.
  1592. (09:25:58 PM) Grindars: слушай
  1593. (09:26:13 PM) Grindars: у compile.rb все еще есть аргумент топлевел?
  1594. (09:27:40 PM) whitequark: да
  1595. (09:27:42 PM) whitequark: а что?
  1596. (09:27:49 PM) Grindars: а он шо делает?
  1597. (09:28:00 PM) whitequark: хм
  1598. (09:28:02 PM) whitequark: ничего?
  1599. (09:28:11 PM) Grindars: тогда хули он еще есть?
  1600. (09:28:18 PM) whitequark: это
  1601. (09:28:21 PM) whitequark: а ты is_file юзаешь?
  1602. (09:28:23 PM) Grindars: нет
  1603. (09:29:04 PM) Grindars: компилятор - придаток coldruby, он ничего интеллектуальнее кодогенерации не делает
  1604. (09:29:08 PM) whitequark: тогда уберу это к ебеням
  1605. (09:29:09 PM) whitequark: будет так
  1606. (09:29:10 PM) whitequark: def compile(what)
  1607.  ruby_iseq = RubyVM::InstructionSequence.compile *what, CompilerOptions
  1608. (09:29:15 PM) Grindars: нене
  1609. (09:29:17 PM) Grindars: убери splat
  1610. (09:29:19 PM) Grindars: разверни
  1611. (09:29:21 PM) whitequark: хм
  1612. (09:29:24 PM) Grindars: мне удобнее не-массивом
  1613. (09:29:26 PM) whitequark: а какие там аргументы-то?
  1614. (09:29:34 PM) whitequark: file, path, line?
  1615. (09:29:43 PM) Grindars: причем path всегда nil
  1616. (09:30:01 PM) whitequark: def compile(code, file, line)
  1617.  ruby_iseq = RubyVM::InstructionSequence.compile code, file, nil, line, CompilerOptions
  1618.  
  1619. (09:30:04 PM) Grindars: да
  1620. (09:30:12 PM) whitequark: дебажный ключ сделай
  1621. (09:30:17 PM) Grindars: который что?
  1622. (09:30:24 PM) whitequark: ColdRuby.debug = true
  1623. (09:30:35 PM) whitequark: будет срать на STDERR.
  1624. (09:30:39 PM) Grindars: -d, --debug  Debug code generation
  1625. (09:30:44 PM) whitequark: ага
  1626. (09:30:54 PM) Grindars: конкретно ща я выпиливаю toplevel
  1627. (09:30:59 PM) Grindars: блядь, то впилить, то выпилить...
  1628. (09:31:20 PM) whitequark: да еб
  1629. (09:31:45 PM) whitequark: это
  1630. (09:31:48 PM) whitequark: оно сегодня заведется?
  1631. (09:31:48 PM) Grindars: по-моему, натив поглощает колдруби.
  1632. (09:31:53 PM) whitequark: натив...
  1633. (09:31:58 PM) whitequark: не, сам компиль останется
  1634. (09:31:59 PM) whitequark: а это главное
  1635. (09:32:01 PM) Grindars: надо рефакторинг
  1636. (09:32:09 PM) whitequark: блин
  1637. (09:32:14 PM) whitequark: хочу запилить yield няшно
  1638. (09:34:30 PM) whitequark: кофий...
  1639. (09:43:53 PM) whitequark: хм.
  1640. (09:44:01 PM) Grindars: almost
  1641. (09:44:24 PM) Grindars: [grindars 2c031e5] Initial V8 support.
  1642. 15 files changed, 501 insertions(+), 54 deletions(-)
  1643. (09:44:31 PM) whitequark: ни хуя себе
  1644. (09:44:34 PM) Grindars: учти, при работе оно делает проверку на удачу
  1645. (09:44:38 PM) whitequark: э, что?
  1646. (09:44:54 PM) Grindars: если ты недостаточно удачлив - не заработает.
  1647. (09:44:58 PM) Grindars: разворота стека нет
  1648. (09:44:59 PM) whitequark: э, что?
  1649. (09:45:00 PM) Grindars: $i нет
  1650. (09:45:02 PM) whitequark: хм.
  1651. (09:45:05 PM) whitequark: $i нет...
  1652. (09:45:08 PM) Grindars: потенциально креши
  1653. (09:45:18 PM) Grindars: $i впили времянкой из старого
  1654. (09:45:21 PM) whitequark: ага
  1655. (09:45:31 PM) Grindars: документации нового кода нет
  1656. (09:45:39 PM) whitequark: пофиг на доки
  1657. (09:45:43 PM) whitequark: я в MRI разобрался
  1658. (09:45:46 PM) whitequark: мне никакой код не страшен
  1659. (09:46:07 PM) Grindars: посмотри... adventure
  1660. (09:46:17 PM) whitequark: adventure?
  1661. (09:46:22 PM) Grindars: over 9000 numeric goto
  1662. (09:46:27 PM) whitequark: ой бля
  1663. (09:46:32 PM) whitequark: в MRI нету гото.
  1664. (09:46:41 PM) Grindars: в моем коде обычно есть гото
  1665. (09:46:50 PM) whitequark: вместо try...finally?
  1666. (09:46:52 PM) Grindars: да
  1667. (09:46:58 PM) Grindars: здесь я не заморачиваюсь экономией байт и делаю нормально
  1668. (09:47:03 PM) whitequark: ага
  1669. (09:47:08 PM) Grindars: кстати
  1670. (09:47:15 PM) Grindars: я помню, ты троллил в какой-то рассылке
  1671. (09:47:30 PM) Grindars: что руби не нужен .pyc, потому что они и так быстро парсит
  1672. (09:47:34 PM) Grindars: нихуя он не быстро парсит.
  1673. (09:47:40 PM) whitequark: не, ты не понял
  1674. (09:47:45 PM) whitequark: питон ЕЩЕ МЕДЛЕННЕЕ
  1675. (09:47:47 PM) whitequark: на порядок
  1676. (09:47:51 PM) whitequark: или даже больше
  1677. (09:47:58 PM) Grindars: или быстро по сравнению с тормозами MRI потом?)
  1678. (09:48:12 PM) Grindars: мне нравится, как собирается coldrub
  1679. (09:48:13 PM) Grindars: *coldruby
  1680. (09:48:15 PM) Grindars: быстро
  1681. (09:48:15 PM) whitequark: хм
  1682. (09:48:17 PM) Grindars: фап-фап-фап
  1683. (09:48:20 PM) whitequark: ))
  1684. (09:48:56 PM) whitequark: реализация руби с самой быстрой сборкой?))
  1685. (09:48:58 PM) Grindars: ты скомпиль его ща, пока я десктоп не вырубил
  1686. (09:49:00 PM) whitequark: ща
  1687. (09:49:19 PM) Grindars:  time coldruby/coldruby -s/dev/null -B hello.rb
  1688.  
  1689. real    0m0.013s
  1690.  
  1691. (09:49:26 PM) whitequark: хм
  1692. (09:49:33 PM) Grindars: coldruby: everything is fast. including build.
  1693. (09:49:37 PM) whitequark: -s/dev/null?
  1694. (09:49:47 PM) Grindars: а что?
  1695. (09:49:52 PM) whitequark: это что?
  1696. (09:50:01 PM) Grindars: -s можно аргумент передать
  1697. (09:50:05 PM) Grindars: файл, куда писать
  1698. (09:50:12 PM) whitequark: а.
  1699. (09:50:22 PM) Grindars: по стандарту гетопта параметры коротких опций пробелом не отделяются, если аргумент опционален
  1700. (09:50:33 PM) Grindars: это самый пиздец
  1701. (09:50:37 PM) whitequark: $ ./coldruby/coldruby hello.rb
  1702. coldruby: 01_ruby.js:990: ReferenceError: $i is not defined
  1703.          } else throw e; // dooooown to the basement
  1704. ~~~~~~~~~~~~~~~~~^
  1705. Stack trace:
  1706. ReferenceError: $i is not defined
  1707.    at Object.<anonymous> (06_kernel.js:93:31)
  1708.    at Object.execute (01_ruby.js:1058:27)
  1709.    at Object.funcall2 (01_ruby.js:701:17)
  1710.    at Object.<anonymous> (<compiled>:34:22)
  1711.    at Object.execute (01_ruby.js:984:33)
  1712.    at <compiled>:51:8
  1713.  
  1714. (09:50:39 PM) whitequark: вин
  1715. (09:50:46 PM) Grindars: нравится стрелочка?
  1716. (09:50:49 PM) whitequark: ага
  1717. (09:50:50 PM) whitequark: няшно
  1718. (09:50:56 PM) whitequark: как этот
  1719. (09:50:58 PM) Grindars: в кланге так ошибки
  1720. (09:51:00 PM) whitequark: в нетхаке
  1721. (09:51:02 PM) Grindars: только еще цветные
  1722. (09:51:08 PM) whitequark: о, цветные
  1723. (09:51:10 PM) whitequark: надо впилить )
  1724. (09:51:16 PM) Grindars: термиос нужен
  1725. (09:51:22 PM) whitequark: ffuuuuu~~
  1726. (09:51:28 PM) whitequark: ой
  1727. (09:51:35 PM) whitequark: я вспомнил, откуда пошло это ffuuuu~~
  1728. (09:51:37 PM) Grindars: ты его крешнул?
  1729. (09:51:37 PM) whitequark: ffuuuuuuu~~
  1730. (09:51:41 PM) Grindars: а я помню
  1731. (09:51:46 PM) whitequark: я теперь тоже.
  1732. (09:51:49 PM) whitequark: ffuuuuuu~~
  1733. (09:51:52 PM) whitequark: не, не так
  1734. (09:51:53 PM) whitequark: буэээээ.
  1735. (09:51:57 PM) Grindars: да
  1736. (09:51:59 PM) Grindars: православно
  1737. (09:52:11 PM) whitequark: хотя если представить
  1738. (09:52:13 PM) whitequark: тоже малоприятно
  1739. (09:52:23 PM) whitequark: вроде запустил
  1740. (09:52:26 PM) whitequark: ща впилю $i
  1741. (09:52:36 PM) Grindars: хелловорлд хелловолдит
  1742. (09:52:38 PM) Grindars: ?
  1743. (09:52:43 PM) whitequark: мнэ
  1744. (09:52:44 PM) whitequark: падает
  1745. (09:52:46 PM) whitequark: без $i
  1746. (09:52:51 PM) Grindars: ах да, exit не стоит делать как exit, он стек не разворачивает
  1747. (09:53:04 PM) Grindars: т.е. плохо очистит
  1748. (09:53:28 PM) whitequark: так
  1749. (09:53:31 PM) whitequark: куда впиливать?
  1750. (09:53:33 PM) whitequark: в какой класс?
  1751. (09:53:37 PM) Grindars: в рубивм
  1752. (09:53:42 PM) Grindars: колдрубивм
  1753. (09:54:23 PM) Grindars: static bool v8::V8::Dispose (        )   [static]
  1754. Releases any resources used by v8 and stops any utility threads that may be running.
  1755.  
  1756. Note that disposing v8 is permanent, it cannot be reinitialized.
  1757.  
  1758.  
  1759. (09:54:40 PM) Grindars: после ембеддеда слово "permanent" меня пугает
  1760. (09:54:49 PM) whitequark: хехе
  1761. (09:54:55 PM) Grindars:
  1762. static bool v8::V8::IsDead  (        )   [static]
  1763. Check if V8 is dead and therefore unusable.
  1764.  
  1765. This is the case after fatal errors such as out-of-memory situations.
  1766. (09:55:05 PM) whitequark: лол
  1767. (09:55:21 PM) Grindars: жалко, что нет RaiseUndead()
  1768. (09:55:41 PM) whitequark: есть, дрочи внутренние структуры
  1769. (09:55:45 PM) whitequark: это будет колдунство
  1770. (09:56:02 PM) Grindars: The termination is achieved by throwing an exception that is uncatchable by JavaScript exception handlers. Termination exceptions act as if they were caught by a C++ TryCatch exception handlers. If forceful termination is used, any C++ TryCatch exception handler that catches an exception should check if that exception is a termination exception and immediately return if that is the case. Returning immediately in that case will continue the propagation of the termination exception if needed.
  1771. (09:56:26 PM) Grindars: у V8 кооперативная многозадачность
  1772. (09:56:28 PM) Grindars: нативно
  1773. (09:56:32 PM) whitequark: хм
  1774. (09:56:35 PM) whitequark: мне нужны фиберы.
  1775. (09:56:43 PM) Grindars: это блядь они и есть
  1776. (09:56:48 PM) whitequark: ага
  1777. (09:57:42 PM) Grindars has signed off.
  1778. (10:03:07 PM) Grindars has signed on.
  1779. (10:04:04 PM) Grindars: а если сделать расширение 'coldruby' со всяким разным, например, состоянием кучи в8, это будет руби-вей?
  1780. (10:04:08 PM) whitequark: хм
  1781. (10:04:10 PM) whitequark: вполне
  1782. (10:04:22 PM) whitequark: $ ./coldruby/coldruby hello.rb
  1783.  
  1784. #
  1785. # Fatal error in v8::HandleScope::CreateHandle()
  1786. # Cannot create a handle without a HandleScope
  1787. #
  1788.  
  1789. Aborted
  1790.  
  1791. (10:04:23 PM) whitequark: хмм
  1792. (10:04:42 PM) Grindars: показывай код
  1793. (10:04:47 PM) whitequark: уже понял
  1794. (10:05:00 PM) whitequark: $ ./coldruby/coldruby hello.rb
  1795. Hello world
  1796. $ cat hello.rb
  1797. puts "Hello world"
  1798.  
  1799. (10:05:02 PM) whitequark: няяяя!!!
  1800. (10:05:09 PM) Grindars: да, неплохо.
  1801. (10:05:18 PM) whitequark: НЯЯЯ!!!
  1802. (10:05:24 PM) whitequark: ^___^
  1803. (10:05:31 PM) whitequark: кавайка.
  1804. (10:05:33 PM) ***Grindars pokerfac
  1805. (10:05:36 PM) Grindars: *pokerface
  1806. (10:05:39 PM) whitequark: хех.
  1807. (10:06:15 PM) Grindars: rxr.w.o не копается
  1808. (10:06:43 PM) whitequark: а у меня пашет
  1809. (10:06:53 PM) whitequark: хм
  1810. (10:06:55 PM) whitequark: и не копается
  1811. (10:06:56 PM) whitequark: втф.
  1812. (10:07:28 PM) Grindars: зону проверь
  1813. (10:07:30 PM) whitequark: w.o упал
  1814. (10:07:33 PM) whitequark: а не
  1815. (10:07:50 PM) whitequark: ага
  1816. (10:07:52 PM) whitequark: днска упала
  1817. (10:07:59 PM) whitequark: Apr 25 22:07:42 dagaz pdns[18492]: Unable to load module '/usr/lib/powerdns/libgmysqlbackend.so': /usr/lib/powerdns/libgmysqlbackend.so: symbol __cxa_pure_virtual, version libmysqlclient_16 not defined in file libmysqlclient.so.16 with link time reference
  1818.  
  1819. (10:08:00 PM) whitequark: блядь
  1820. (10:08:07 PM) Grindars: reboot.
  1821. (10:08:10 PM) whitequark: нет
  1822. (10:08:23 PM) whitequark: нууу
  1823. (10:08:24 PM) whitequark: или да...
  1824. (10:08:26 PM) Grindars: у тебя зоны в sql?
  1825. (10:08:27 PM) whitequark: что за хуйня?
  1826. (10:08:27 PM) whitequark: да
  1827. (10:08:31 PM) Grindars: хули они там делают?
  1828. (10:08:48 PM) whitequark: лежат, бля
  1829. (10:09:09 PM) whitequark: Ща откачу пакет
  1830. (10:10:18 PM) whitequark: ага, откатил
  1831. (10:10:19 PM) whitequark: все ок
  1832. (10:10:52 PM) Grindars: rxr.whitequark.org. 3364    IN  CNAME   501legion.org.
  1833. 501legion.org.      86400   IN  A   95.31.17.119
  1834.  
  1835. ;; AUTHORITY SECTION:
  1836. 501legion.org.      86163   IN  NS  ns2.ipv6.rollernet.us.
  1837. 501legion.org.      86163   IN  NS  ns1.ipv6.rollernet.us.
  1838. 501legion.org.      86163   IN  NS  ns0.whitequark.org.
  1839. (10:10:57 PM) whitequark: да
  1840. (10:11:04 PM) whitequark: он не на моем серве
  1841. (10:11:05 PM) Grindars: это странно
  1842. (10:11:09 PM) whitequark: на серве знакомого, я его админю
  1843. (10:11:21 PM) whitequark: мой бы всю ночь индекс перелопачивал
  1844. (10:11:55 PM) Grindars: а грин.орг?
  1845. (10:12:06 PM) whitequark: мнээээ
  1846. (10:12:09 PM) whitequark: я ночью ставил
  1847. (10:12:13 PM) whitequark: а там надо было пару пакетов.
  1848. (10:12:46 PM) whitequark: бля, все равно спать хочу
  1849. (10:12:49 PM) whitequark: снотворного чтоль дали
  1850. (10:12:57 PM) whitequark: тогда оно хуево работает, потому что не особо хочу
  1851. (10:13:05 PM) whitequark: так
  1852. (10:13:13 PM) whitequark: надо будет впилить красивый показ эксепшнов руби
  1853. (10:13:27 PM) Grindars: всм?
  1854. (10:13:32 PM) whitequark: $ ./coldruby/coldruby hello.rb
  1855. coldruby: 01_ruby.js:1046: [object Object]
  1856.            throw e;
  1857. ~~~~~~~~~~~~^
  1858.  
  1859. (10:13:36 PM) whitequark: а надо мессагу и трейс.
  1860. (10:13:44 PM) Grindars: расскажи, как
  1861. (10:13:47 PM) whitequark: нууу
  1862. (10:14:35 PM) Grindars: кто писал онигуруму?
  1863. (10:14:40 PM) whitequark: японцы
  1864. (10:14:42 PM) whitequark: а что?
  1865. (10:14:50 PM) whitequark: она винрарна
  1866. (10:14:57 PM) Grindars: ебический пиздец, док опять нет
  1867. (10:15:01 PM) whitequark: почему?
  1868. (10:15:02 PM) whitequark: есть
  1869. (10:15:20 PM) Grindars: а, точно
  1870. (10:16:13 PM) Grindars:   Create a regex object.
  1871.  This function is deluxe version of onig_new().
  1872. (10:16:18 PM) Grindars: што?
  1873. (10:16:21 PM) whitequark: гы
  1874. (10:16:35 PM) whitequark: хз
  1875. (10:17:13 PM) Grindars: если я сделаю жс-класс OnigurumaRegex, заюзаешь?
  1876. (10:17:25 PM) whitequark: хмм
  1877. (10:17:30 PM) whitequark: надо думать над АПИ.
  1878. (10:17:38 PM) Grindars: я просто оберну апи
  1879. (10:17:39 PM) Grindars: в жс
  1880. (10:17:41 PM) whitequark: хммм.
  1881. (10:17:44 PM) Grindars: 1:1
  1882. (10:17:46 PM) whitequark: хмммм.
  1883. (10:17:54 PM) whitequark: наверное, это правильно.
  1884. (10:18:48 PM) whitequark: if(ex.op == 'raise') {
  1885.  print(ruby.funcall(ex.object.klass, 'to_s') + ": " + ruby.funcall(ex.object, 'to_s') + "\n"));
  1886.  var trace = ruby.check_convert_type(ruby.funcall(ex.object, 'backtrace'), ruby.c.Array, 'to_a');
  1887.  for(var i = 0; i < trace.length; i++)
  1888.    print("\tfrom " + ruby.check_convert_type(trace[i], ruby.c.String, 'to_s'));
  1889. }
  1890. (10:18:51 PM) whitequark: вот так хендлить
  1891. (10:19:10 PM) Grindars: в нативе?
  1892. (10:19:13 PM) whitequark: ага
  1893. (10:20:02 PM) Grindars: если исключение колдрубишное, то у него будет свойство klass?
  1894. (10:20:05 PM) whitequark: да
  1895. (10:20:07 PM) whitequark: то есть не
  1896. (10:20:08 PM) whitequark: смотри
  1897. (10:20:17 PM) whitequark: колдрубе делает разные виды throw
  1898. (10:20:24 PM) whitequark: но во всех есть одна вещь
  1899. (10:20:29 PM) whitequark: { op: TYPE }
  1900. (10:20:30 PM) whitequark: строка
  1901. (10:20:36 PM) whitequark: если raise, то это ексепшн
  1902. (10:20:41 PM) whitequark: остальные не должны вылетать в натив никогда
  1903. (10:21:03 PM) Grindars: иначе "ColdRuby Runtime bug"
  1904. (10:21:19 PM) whitequark: ага
  1905. (10:21:27 PM) whitequark: и покажи op, тогда уж
  1906. (10:21:41 PM) Grindars: я дампану объектца, может?
  1907. (10:22:02 PM) whitequark: хм
  1908. (10:22:02 PM) whitequark: ага
  1909. (10:22:47 PM) Grindars: http://blogs.msdn.com/b/oldnewthing/archive/2011/04/25/10157540.aspx
  1910. (10:25:23 PM) whitequark: гыг
  1911. (10:26:10 PM) whitequark: $ ./coldruby/coldruby hello.rb
  1912. LocalJumpError: no block given (yield)
  1913.     from hello.rb:2: in `block in a'
  1914.     from <runtime:05_proc.js>:31: in `call'
  1915.     from hello.rb:2: in `a'
  1916.     from hello.rb:5: in `<compiled>'
  1917.  
  1918. (10:26:11 PM) whitequark: ура.
  1919. (10:26:23 PM) whitequark: сделал костыль отображения
  1920. (10:26:28 PM) whitequark:   show_error: function(exception) {
  1921.    $i.print(this.funcall(exception.klass, 'to_s') + ": " +
  1922.               this.funcall(exception, 'to_s') + "\n");
  1923.  
  1924.    var trace = this.funcall(exception, 'backtrace');
  1925.    trace = this.check_convert_type(trace, this.c.Array, 'to_a');
  1926.  
  1927.    for(var i = 0; i < trace.length; i++)
  1928.      $i.print("\tfrom " + this.check_convert_type(trace[i], this.c.String, 'to_s') + "\n");
  1929.  },
  1930.  
  1931. (10:26:31 PM) whitequark: вот рабочий код
  1932. (10:26:38 PM) Grindars: перейдет в натив?
  1933. (10:26:41 PM) whitequark: да
  1934. (10:26:43 PM) whitequark: надо в нативе
  1935. (10:30:46 PM) whitequark: а ты чтоль что-то делаешь с рантаймом?
  1936. (10:30:54 PM) whitequark: кешируешь?
  1937. (10:31:08 PM) Grindars: неа
  1938. (10:31:17 PM) Grindars: не трогаю пока
  1939. (10:31:22 PM) whitequark: хмм
  1940. (10:36:02 PM) whitequark: ладно, у меня что-то затык
  1941. (10:36:08 PM) whitequark: а браузер ты еще не впилил
  1942. (10:36:36 PM) whitequark: а, хотя
  1943. (10:36:38 PM) whitequark: руками норм.
  1944. (10:36:45 PM) Grindars: кого? браузер?
  1945. (10:36:54 PM) Grindars: тебе мало в8, еще вебкит надо?!
  1946. (10:36:54 PM) whitequark: поддержку его
  1947. (10:37:05 PM) whitequark: все уже
  1948. (10:37:07 PM) whitequark: три строки
  1949. (10:38:48 PM) whitequark: хмм
  1950. (10:38:50 PM) whitequark: что-то я туплю
  1951. (10:38:56 PM) whitequark: ладно, завтра.
  1952. (10:39:04 PM) Grindars: спи
  1953. (10:39:08 PM) whitequark: угу
  1954. (10:39:17 PM) Grindars: я через 20 минут пойду
  1955. (10:39:24 PM) Grindars: потом встану в 7 и буду рефакторить
  1956. (10:57:46 PM) Grindars has signed off.
  1957. (09:32:11 AM) Grindars has signed on.
  1958. (09:32:21 AM) whitequark: так
  1959. (09:32:23 AM) whitequark: я тут
  1960. (09:32:30 AM) whitequark: ночью пофиксил багов
  1961. (09:32:37 AM) Grindars: я вытянул
  1962. (09:32:39 AM) whitequark: на тестах literal фейлилось 49
  1963. (09:32:39 AM) Grindars: привет, кстати
  1964. (09:32:42 AM) whitequark: теперь 28
  1965. (09:32:43 AM) whitequark: привет, ага
  1966. (09:32:48 AM) Grindars: я сейчас делаю unwinding
  1967. (09:32:58 AM) Grindars: все сложнее, чем кажется, хехе
  1968. (09:33:06 AM) whitequark: кстати, с твоим колдрубе тестраннер работает быстрее
  1969. (09:33:10 AM) Grindars: из исключения нельзя взять и получить нативный трейс
  1970. (09:33:14 AM) whitequark: можно даже не делать ремоте компилер
  1971. (09:33:38 AM) whitequark: думаю, все дело было в геме json
  1972. (09:33:40 AM) whitequark: он тормозил.
  1973. (09:34:16 AM) Grindars: надо делать Local<Value> Debug::Call(unwinding_function), жс-функция вызовется на контексте дебаггера с параметром exec_state, где будет стек, а его можно ковырять уже
  1974. (09:34:30 AM) Grindars: сформировать массив нормальный и вернуть, а дальше unwinding делать
  1975. (09:36:18 AM) Grindars: будет немного медленно (десятки-сотни мс), но часто ли возникают непойманные исключения?)
  1976. (09:37:10 AM) whitequark: test_flow.rb ..FFFFFcoldruby: <main>: ColdRuby::UnknownFeatureException: You have encountered an unknown (to the developer(s) of ColdRuby) feature in Ruby (throw type 49154). Please, contact them and send the relevant code for the feature to be added.
  1977.  
  1978. (09:37:12 AM) whitequark: что за хуйня
  1979. (09:37:14 AM) whitequark: 49154?!!
  1980. (09:37:35 AM) whitequark: 1100000000000010
  1981. (09:37:37 AM) whitequark: хм.
  1982. (09:38:26 AM) Grindars: Returns a mirror object for the given object.
  1983. (09:38:38 AM) Grindars: кого?
  1984. (09:44:38 AM) Grindars: trying to unwind Ruby stack
  1985. unwinding helper is empty, entering debug context
  1986. i'm in ur debug context, evaluating ur scripts
  1987.  
  1988. оно не скрешилось!11
  1989. (09:45:34 AM) Grindars: слух
  1990. (09:45:56 AM) Grindars: куда мне вспомогательный скрипт дебаггера деть?
  1991. (09:47:13 AM) whitequark: хмм
  1992. (09:47:16 AM) whitequark: всм?
  1993. (09:47:23 AM) whitequark: жску?
  1994. (09:47:50 AM) Grindars: да
  1995. (09:47:51 AM) Grindars: жска
  1996. (09:47:57 AM) Grindars: но она в другом контексте работает
  1997. (09:47:59 AM) whitequark: хм
  1998. (09:48:08 AM) whitequark: а хуй знает
  1999. (10:08:07 AM) Grindars: блин
  2000. (10:08:10 AM) Grindars: почему-то стек пустой
  2001. (10:08:12 AM) Grindars: нет фреймов
  2002. (10:15:36 AM) Grindars: пинг
  2003. (10:16:55 AM) whitequark: понг
  2004. (10:17:01 AM) Grindars: все, я понял
  2005. (10:17:10 AM) Grindars: или я долбоеб, или v8 нелогичен
  2006. (10:17:40 AM) Grindars: v8::TryCatch:
  2007. Local <http://izs.me/v8-docs/classv8_1_1Local.html>< v8::Message <http://izs.me/v8-docs/classv8_1_1Message.html> > Message <http://izs.me/v8-docs/classv8_1_1TryCatch.html#a2811e500fbb906ee505895a3d94fc66f> () const Returns the message associated with this exception. 
  2008.  
  2009. v8::Message:
  2010. Handle< StackTrace >    GetStackTrace () const
  2011.     Exception stack trace.
  2012. (10:21:03 AM) Grindars: static void     SetCaptureStackTraceForUncaughtExceptions (bool capture, int frame_limit=10, StackTrace::StackTraceOptions options=StackTrace::kOverview)
  2013. прям винапи какое-то
  2014. (10:21:11 AM) whitequark: еб
  2015. (10:23:07 AM) Grindars: нет, не оно, это ж пойманное исключение
  2016. (10:23:14 AM) Grindars: а стек пуст. как странно
  2017. (10:23:24 AM) Grindars: вернее, не пуст, его  нет
  2018. (10:26:24 AM) Grindars: блядь.
  2019. (10:26:30 AM) Grindars: стек не валиден в try/catch
  2020. (10:26:42 AM) Grindars: придется парсить строку.
  2021. (10:26:56 AM) whitequark: я пушнул...
  2022. (10:29:31 AM) Grindars: FWIW, here's another way to extract tokens from an input string, relying only on Standard Library facilities. It's an example of the power and elegance behind the design of the STL.
  2023.  
  2024. vector<string> tokens;
  2025. copy(istream_iterator<string>(iss),
  2026.         istream_iterator<string>(),
  2027.         back_inserter<vector<string> >(tokens));
  2028. (10:29:37 AM) Grindars: они там пизданулись чтоль
  2029. (10:29:57 AM) Grindars: it's TOO GENERIC
  2030. (10:38:52 AM) whitequark: а, еще такая хуйня
  2031. (10:38:55 AM) whitequark: мм
  2032. (10:38:55 AM) whitequark: ща
  2033. (10:39:16 AM) Grindars: как же тяжело писать на STL
  2034. (10:39:38 AM) Grindars: std::istringstream trace_stream(trace);
  2035.            
  2036.             while(!trace_stream.eof()) {
  2037.                 std::string line;
  2038.                
  2039.                 std::getline(trace_stream, line);
  2040.  
  2041.                 ...
  2042.         }
  2043. (10:39:59 AM) whitequark: во, смотри
  2044. (10:40:07 AM) whitequark: если я, скажем, захочу колдрубе в nodejs
  2045. (10:40:12 AM) whitequark: то мне потребуется онигурума там
  2046. (10:40:21 AM) whitequark: вот как бы это так захуячить.
  2047. (10:40:29 AM) Grindars: у V8 есть расширения.
  2048. (10:40:37 AM) whitequark: а, свой механизм?
  2049. (10:40:44 AM) whitequark: тогда его и надо юзать
  2050. (10:41:09 AM) Grindars: ээ
  2051. (10:41:17 AM) Grindars: там в doxygen
  2052. (10:41:29 AM) whitequark: хм?
  2053. (10:41:29 AM) Grindars: v8::Extension Class Reference
  2054.  
  2055. Ignore.
  2056. (10:41:37 AM) whitequark: не въеб
  2057. (10:41:38 AM) Grindars: ясно, так и сделаю
  2058. (10:41:58 AM) Grindars: может, хуево сделаны, не работают либо устарели
  2059. (10:42:03 AM) whitequark: еще запили команду
  2060. (10:42:06 AM) whitequark: "дай рантайм"
  2061. (10:42:17 AM) Grindars: да погоди ты, дай сраные исключения распарсить
  2062. (10:46:51 AM) whitequark: и еще require надо из nodejs...
  2063. (10:46:57 AM) whitequark: надо будет придумать, как.
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement