Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- (03:59:22 PM) whitequark: я блядь понял
- (03:59:36 PM) Grindars: я задокументировал, домучиваю гит и ща залью
- (03:59:41 PM) whitequark: лямбды создаются не в исполняемом контексте, а в лексическом!!!1
- (03:59:55 PM) whitequark: г-споди, я два дня этим себе мозг ебал.
- (04:00:01 PM) whitequark: сколько же над этим думал Юкихиро...
- (04:00:12 PM) Grindars: у меня как-то был месячный затуп над абортами в арме
- (04:00:31 PM) Grindars: автор лд потом, наверное, весь день икал
- (04:00:37 PM) whitequark: хехе
- (04:01:14 PM) whitequark: ммм
- (04:01:19 PM) whitequark: а когда оно будет выполнят?
- (04:01:25 PM) Grindars: скоро
- (04:02:30 PM) Grindars: я по тупости сделал mv вместо git mv, теперь ремонтирую
- (04:02:51 PM) whitequark: че там чинить
- (04:02:53 PM) whitequark: git add -A
- (04:03:20 PM) Grindars: блядь
- (04:03:27 PM) Grindars: очень плохой совет
- (04:03:35 PM) Grindars: оно туда мегатонну хуйни втянуло
- (04:04:55 PM) Grindars: пушнул
- (04:05:21 PM) Grindars: ремот впилю тогда потом
- (04:05:29 PM) Grindars: пойду курить V8
- (04:05:38 PM) whitequark: о, вижу
- (04:05:39 PM) whitequark: гуд
- (04:05:45 PM) whitequark: это, отчего может быть такая фенька
- (04:05:56 PM) whitequark: после саспенда ядро выпадает в бесконечный цикл чего-то типа oops
- (04:06:00 PM) whitequark: на magic sysrq не реагирует
- (04:06:03 PM) whitequark: ядро не менял уже давно
- (04:06:06 PM) whitequark: сегодня три раза
- (04:06:07 PM) Grindars: я не кернел-девелопер
- (04:06:08 PM) whitequark: раньше такого не было
- (04:06:11 PM) whitequark: а вдруг знаешь
- (04:06:14 PM) Grindars: а не знаю
- (04:06:18 PM) Grindars: я не юзаю саспенд
- (04:06:21 PM) Grindars: я юзаю костыли
- (04:06:25 PM) Grindars: называется "ссд"
- (04:06:32 PM) Grindars: система бутается быстрее, чем просыпается
- (04:06:42 PM) whitequark: и скока?
- (04:06:56 PM) Grindars: 3 сек до десктопа кде
- (04:06:56 PM) whitequark: т.е. объем и бабло
- (04:07:00 PM) Grindars: а
- (04:07:18 PM) Grindars: 32 гига объем
- (04:07:25 PM) Grindars: бабло... не помню(
- (04:07:28 PM) Grindars: чек искать лень
- (04:07:35 PM) whitequark: 32 гига... может, мне и хватит
- (04:07:37 PM) whitequark: если внешний купить
- (04:07:38 PM) whitequark: а я купил
- (04:07:41 PM) whitequark: коробочку, то есть.
- (04:07:46 PM) Grindars: но это десктоп и на ссд система
- (04:07:50 PM) whitequark: угу
- (04:07:53 PM) whitequark: я могу и вынуть тащем-та
- (04:08:00 PM) Grindars: к нему еще 2ТБ сторейджа
- (04:08:03 PM) whitequark: ебать
- (04:08:06 PM) whitequark: мне бы 50 гиг хватило
- (04:08:16 PM) Grindars: а у меня один винт забит только фильмами
- (04:08:23 PM) whitequark: Vertex 2 SATA II 2.5" SSD
- (04:08:27 PM) whitequark: читаю «virtex»
- (04:08:29 PM) Grindars: Virtex?!
- (04:08:36 PM) Grindars: а, vertex
- (04:08:39 PM) whitequark: хехе
- (04:08:42 PM) whitequark: фпга ГМ
- (04:08:53 PM) Grindars: жарко блядь
- (04:08:57 PM) whitequark: ага
- (04:09:01 PM) whitequark: я обычно быстро хожу
- (04:09:03 PM) whitequark: сегодня охуел
- (04:09:08 PM) whitequark: дошел 50м до поликлиники и сварился
- (04:09:14 PM) Grindars: поэтому я шел медлеееееннноооо
- (04:09:20 PM) whitequark: а я не могу
- (04:09:32 PM) whitequark: всегда хожу быстро.
- (04:09:36 PM) whitequark: пока не начну подыхать
- (04:09:38 PM) whitequark: тогда медленно, да.
- (04:09:39 PM) Grindars: я попутно развлекаюсь хуйней
- (04:09:45 PM) Grindars: например, считаю голубей
- (04:09:48 PM) whitequark: ...
- (04:09:51 PM) whitequark: считать.
- (04:09:52 PM) whitequark: голубей.
- (04:09:55 PM) whitequark: ненавижу голубей
- (04:09:57 PM) whitequark: они срут на меня
- (04:09:58 PM) Grindars: я тоже
- (04:10:07 PM) whitequark: я могу их только в прицеле считать, наверное
- (04:10:36 PM) Grindars: ночью разбудил сервер
- (04:10:55 PM) Grindars: ПИИИИУУУУ. ПИИИИУУУУ. ПИИИИУУУУ.
- (04:11:09 PM) whitequark: а?
- (04:11:11 PM) whitequark: это что?
- (04:11:22 PM) Grindars: overheat
- (04:11:38 PM) Grindars: какой-то долбоеб решил, что на него надо класть пакеты
- (04:11:52 PM) whitequark: пакеты?
- (04:11:59 PM) Grindars: полиэтиленовые
- (04:12:06 PM) whitequark: мда
- (04:12:09 PM) whitequark: http://market.yandex.ru/model.xml?hid=91033&modelid=6125258
- (04:12:12 PM) whitequark: во, такой куплю
- (04:12:15 PM) whitequark: когда еще бабла дадут
- (04:12:16 PM) Grindars: учти
- (04:12:25 PM) whitequark: wear?
- (04:12:30 PM) Grindars: надо как можно более новое ядро
- (04:12:32 PM) Grindars: но не 38
- (04:12:34 PM) whitequark: хм
- (04:12:35 PM) Grindars: оно эпик фейл
- (04:12:40 PM) whitequark: хмхм.
- (04:12:40 PM) Grindars: 25% проеб питания
- (04:12:43 PM) Grindars: регрессия
- (04:12:46 PM) whitequark: пидарасы.
- (04:12:51 PM) Grindars: ext4
- (04:12:56 PM) whitequark: ext4...
- (04:12:57 PM) Grindars: и хитрые опции монтирования
- (04:13:00 PM) Grindars: ext3 нельзя
- (04:13:02 PM) Grindars: LVM нельзя
- (04:13:05 PM) whitequark: блядь.
- (04:13:08 PM) Grindars: не будет TRIM и оно деградирует
- (04:13:09 PM) whitequark: без LVM хуево
- (04:13:12 PM) whitequark: надо систему переставлять
- (04:13:19 PM) Grindars: я не переставлял
- (04:13:22 PM) Grindars: я забиндил винт
- (04:13:28 PM) whitequark: копипаст?
- (04:13:30 PM) Grindars: /dev/sda3 on /mnt/hdd type ext3 (rw,commit=0)
- /mnt/hdd/home on /home type none (rw,bind,commit=0)
- /mnt/hdd/opt/Xilinx on /opt/Xilinx type none (rw,bind,commit=0)
- (04:13:57 PM) Grindars: дальше надо
- tmpfs on /tmp type tmpfs (rw)
- tmpfs on /var/run type tmpfs (rw)
- tmpfs on /var/lock type tmpfs (rw)
- иначе износ
- (04:14:04 PM) whitequark: ага
- (04:14:13 PM) Grindars: опции ext4: noatime,discard
- (04:14:27 PM) whitequark: ага
- (04:14:33 PM) Grindars: обязательно сата в нативном режиме (AHCI, nvsata)
- (04:14:40 PM) whitequark: ясен пень
- (04:15:45 PM) Grindars: $ sudo /sbin/hdparm -I /dev/sdb
- [sudo] password for grindars:
- /dev/sdb:
- ATA device, with non-removable media
- Model Number: TS32GSSD25S-M
- Serial Number: 20101213389555076872
- Firmware Revision: 100707A
- Transport: Serial, ATA8-AST, SATA 1.0a, SATA II Extensions, SATA Rev 2.5, SATA Rev 2.6
- Standards:
- Supported: 8 7 6 5
- Likely used: 8
- Configuration:
- Logical max current
- cylinders 16383 16383
- heads 16 16
- sectors/track 63 63
- --
- CHS current addressable sectors: 16514064
- LBA user addressable sectors: 62533296
- LBA48 user addressable sectors: 62533296
- Logical Sector size: 512 bytes
- Physical Sector size: 512 bytes
- Logical Sector-0 offset: 512 bytes
- device size with M = 1024*1024: 30533 MBytes
- device size with M = 1000*1000: 32017 MBytes (32 GB)
- cache/buffer size = unknown
- Form Factor: 2.5 inch
- Nominal Media Rotation Rate: Solid State Device
- Capabilities:
- LBA, IORDY(can be disabled)
- Queue depth: 32
- Standby timer values: spec'd by Standard, no device specific minimum
- R/W multiple sector transfer: Max = 16 Current = 16
- Advanced power management level: disabled
- DMA: mdma0 mdma1 mdma2 udma0 udma1 udma2 udma3 udma4 udma5 *udma6
- Cycle time: min=120ns recommended=120ns
- PIO: pio0 pio1 pio2 pio3 pio4
- Cycle time: no flow control=120ns IORDY flow control=120ns
- Commands/features:
- Enabled Supported:
- * SMART feature set
- Security Mode feature set
- * Power Management feature set
- * Write cache
- * Look-ahead
- * Host Protected Area feature set
- * WRITE_BUFFER command
- * READ_BUFFER command
- * DOWNLOAD_MICROCODE
- Advanced Power Management feature set
- SET_MAX security extension
- * 48-bit Address feature set
- * Device Configuration Overlay feature set
- * Mandatory FLUSH_CACHE
- * FLUSH_CACHE_EXT
- * SMART error logging
- * SMART self-test
- * General Purpose Logging feature set
- * WRITE_{DMA|MULTIPLE}_FUA_EXT
- * 64-bit World wide name
- * WRITE_UNCORRECTABLE_EXT command
- * Gen1 signaling speed (1.5Gb/s)
- * Gen2 signaling speed (3.0Gb/s)
- * Native Command Queueing (NCQ)
- * Phy event counters
- * DMA Setup Auto-Activate optimization
- * Software settings preservation
- * Data Set Management TRIM supported (limit unknown)
- Security:
- Master password revision code = 65534
- supported
- not enabled
- not locked
- not frozen
- not expired: security count
- supported: enhanced erase
- 20min for SECURITY ERASE UNIT. 20min for ENHANCED SECURITY ERASE UNIT.
- Logical Unit WWN Device Identifier: 5001b8c000000000
- NAA : 5
- IEEE OUI : 001b8c
- Unique ID : 000000000
- Checksum: correct
- (04:16:14 PM) Grindars: кстати, прикольно
- (04:16:30 PM) Grindars: SSD: 20min for SECURITY ERASE UNIT. 20min for ENHANCED SECURITY ERASE UNIT.
- HDD: 212min for SECURITY ERASE UNIT. 212min for ENHANCED SECURITY ERASE UNIT.
- (04:16:36 PM) whitequark: хыхы
- (04:16:43 PM) Grindars: нанду можно взять и уебать, а хдд надо долго дрочить
- (04:16:54 PM) Grindars: тут на лоре спрашиваю
- (04:16:57 PM) Grindars: *спрашивали
- (04:17:00 PM) whitequark: а.
- (04:17:01 PM) whitequark: уф.
- (04:17:19 PM) whitequark: у тебя в коде trailing tabs
- (04:17:22 PM) whitequark: ffuuuu~~~
- (04:17:24 PM) Grindars: почисти
- (04:17:33 PM) whitequark: так ты опять насрешь
- (04:17:38 PM) Grindars: если винт кинуть в термит, чтобы поднялось выше точки кюри (а лучше расплавило к ебеням), точно нельзя будет отрекаверить?
- (04:17:45 PM) whitequark: да
- (04:18:28 PM) Grindars: ему предлагают: лучше зашифруй, а ключ на флешку, ее проще уничтожить
- (04:18:50 PM) Grindars: он: дык флешки еще проще восстановить
- ему: ты ее молотком разъеби нахуй, и нечего будет восстанавливать
- (04:18:59 PM) whitequark: ага
- (04:19:15 PM) Grindars: нанду в азотную кислоту, чтобы корпус нахуй
- (04:19:27 PM) whitequark: ага
- (04:19:34 PM) whitequark: проще тупо молотком.
- (04:19:36 PM) whitequark: по кристаллу
- (04:19:40 PM) whitequark: и хуй восстановишь
- (04:19:52 PM) Grindars: по корпусу микрухи можно долго бит
- (04:19:53 PM) Grindars: *бить
- (04:19:56 PM) Grindars: хуй ей чего будет
- (04:20:00 PM) whitequark: неа
- (04:20:07 PM) whitequark: надо просто знать, куда бить
- (04:20:08 PM) whitequark: и один удар.
- (04:20:12 PM) Grindars: поврежденные ноги рекаверятся советским методом
- (04:20:19 PM) whitequark: при чем тут ноги
- (04:20:20 PM) Grindars: корпус пилится, паяется проволочка
- (04:20:21 PM) whitequark: я ж сказал
- (04:20:24 PM) whitequark: "знать, куда бить
- (04:20:25 PM) Grindars: припаивается
- (04:20:31 PM) Grindars: это надо знать топологию?
- (04:20:31 PM) whitequark: по кристаллу
- (04:20:35 PM) whitequark: кристалл пополам и все
- (04:20:44 PM) whitequark: по центру чипа блядь
- (04:21:17 PM) whitequark: wtf StandardRubyCompiler?
- (04:21:24 PM) Grindars: там все описано
- (04:21:33 PM) whitequark: э
- (04:21:36 PM) whitequark: разве?
- (04:21:41 PM) Grindars: ты тянул?
- (04:21:47 PM) whitequark: а, хидер
- (04:21:47 PM) Grindars: оно должно быть все в доксигене
- (04:21:50 PM) whitequark: я привык к рдоку.
- (04:21:53 PM) whitequark: /** \brief Класс, включающий стандартные реализации некоторых функций для
- * реализации компилятора Ruby.
- */
- (04:21:54 PM) whitequark: гмм.
- (04:22:04 PM) whitequark: реализации реализации реализации?
- (04:22:24 PM) Grindars: у меня энтерпрайз гм?
- (04:22:28 PM) whitequark: да.
- (04:22:31 PM) Grindars: фак
- (04:22:40 PM) Grindars: бизнес-логика?
- (04:22:44 PM) whitequark: угу
- (04:23:11 PM) Grindars: у гугла pkg-configфобия
- (04:23:20 PM) whitequark: почему?
- (04:23:37 PM) Grindars: у v8 нету файлика
- (04:23:44 PM) Grindars: придется старым методом
- (04:28:02 PM) Grindars: checking v8.h usability... yes
- checking v8.h presence... yes
- checking for v8.h... yes
- checking for _ZN2v86Script3RunEv in -lv8... yes
- (04:28:09 PM) Grindars: пиздец?
- (04:28:11 PM) whitequark: гм
- (04:28:13 PM) whitequark: вроде того
- (04:28:19 PM) Grindars: у него нет не-C++-функций
- (04:28:27 PM) whitequark: совсем?
- (04:28:30 PM) Grindars: совсем
- (04:28:37 PM) Grindars: а какая-нибудь функция нужна автоконфу, чтобы найти либу
- (04:28:40 PM) whitequark: угу
- (04:29:34 PM) whitequark: хы
- (04:29:38 PM) whitequark: переходы с google.co.jp
- (04:30:30 PM) whitequark: блин
- (04:30:37 PM) whitequark: меня ебет делать лямбды, пока оно не выполняется
- (04:30:43 PM) whitequark: не хотет старую версию колдрубе.
- (04:30:46 PM) Grindars: дык я это
- (04:30:50 PM) Grindars: прям ща впиливаю
- (04:30:52 PM) whitequark: ага
- (04:31:43 PM) Grindars: а чему равен код возврата руби?
- (04:33:04 PM) whitequark: м
- (04:33:09 PM) whitequark: всм?
- (04:33:16 PM) whitequark: как exit сделаешь, так и будет
- (04:33:20 PM) whitequark: как в сях
- (04:33:23 PM) Grindars: ясно
- (04:33:23 PM) whitequark: по умолчанию 0, конечно
- (04:34:18 PM) whitequark: тестбенч тоже можно убить, походу
- (04:34:37 PM) Grindars: кого?
- (04:34:56 PM) whitequark: да был там недоскриптик
- (04:39:49 PM) Grindars: вот в в8 С++ кооперирует с ГЦ, и он объект внезапно не снесет
- (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
- (04:41:00 PM) Grindars: это с контекстом V8
- (04:41:03 PM) whitequark: .r?
- (04:41:03 PM) Grindars: без контекста:
- grindars 10500 0.0 0.0 11428 4984 pts/0 Sl+ 16:40 0:00 /home/grindars/coldruby-rewrite/coldruby/coldruby ./hello.rb
- (04:41:09 PM) whitequark: гуд
- (04:41:15 PM) whitequark: это меньше MRI
- (04:41:17 PM) whitequark: значительно
- (04:45:04 PM) Grindars: <unknown>:73176: Uncaught SyntaxError: Unexpected token ILLEGAL
- вот что плохо, отладочная инфа проебывается
- (04:45:10 PM) whitequark: да
- (04:45:25 PM) whitequark: у меня для этого особый костыль, который в нативные функции впихивает их положение
- (04:45:28 PM) whitequark: при компиляции
- (04:45:55 PM) whitequark: в в8 вроде есть
- (04:45:57 PM) whitequark: интерфейсы
- (04:47:31 PM) Grindars:
- /* Runtime: /home/grindars/coldruby-rewrite/runtime/Makefile */ LOL WHAT
- (04:47:42 PM) whitequark: гы
- (04:47:44 PM) whitequark: без понятия
- (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.
- (04:49:24 PM) Grindars: можно сбрасывать байт-код.
- (04:51:00 PM) whitequark: гуд
- (05:03:41 PM) Grindars has signed on.
- (05:08:50 PM) whitequark: ну как
- (05:08:51 PM) whitequark: *?
- (05:08:59 PM) Grindars: делаю принт исключений
- (05:10:31 PM) Grindars: coldruby: <compiled>:2631: SyntaxError: Unexpected token ILLEGAL
- # Makefile.in generated by automake 1.11.1 from Makefile.am.
- ^
- Stack trace:
- SyntaxError: Unexpected token ILLEGAL
- (05:11:11 PM) Grindars: багу фиксед
- (05:11:14 PM) Grindars: теперь выполнение...
- (05:11:34 PM) Grindars: после компиляции:
- grindars 11417 1.0 0.1 53624 7744 pts/0 Sl+ 17:11 0:00 /home/grindars/coldruby-rewrite/coldruby/coldruby ./hello.rb
- (05:13:46 PM) Grindars: ColdRubyVM: init
- ColdRubyVM: eval
- coldruby: <compiled>:566: ReferenceError: $i is not defined
- throw e;
- ~~~~~~~~^
- Stack trace:
- ReferenceError: $i is not defined
- at Object.<anonymous> (<compiled>:2687:9)
- at Object.protect (<compiled>:561:19)
- at <compiled>:2673:15
- at <compiled>:2706:2
- ColdRubyVM: fini
- (05:14:11 PM) Grindars: оно разъехалось немного, на самом деле стрелочка кажет на throw
- (05:15:09 PM) Grindars: у меня такой вопрос, а зачем я клеил фреймворки?
- (05:17:31 PM) Grindars: так
- (05:17:34 PM) Grindars: объясни
- (05:18:03 PM) Grindars: def get_runtime(directory, plaintext=false)
- runtime = []
- Dir[File.join(directory, '*.js')].sort.each do |runtime_file|
- # Preprocess
- lines = File.readlines(runtime_file)
- last_definition = nil
- lines.each_with_index { |line, index|
- if line =~ %r{^\$\.define_method\(}
- last_definition = index
- elsif last_definition && line == "});\n"
- lines[index] = "}, { file: #{File.basename(runtime_file).inspect}," <<
- " line: #{last_definition + 1} });\n"
- end
- }
- if plaintext
- runtime_part = ''
- runtime_part << "/* Runtime: #{runtime_file} */\n\n" if plaintext
- runtime_part << lines.join
- runtime_part << "\n\n"
- runtime << runtime_part
- else
- runtime << [File.basename(runtime_file), lines.join]
- end
- end
- runtime
- end
- (05:18:14 PM) Grindars: что это блядь за поебота с определениями методов
- (05:20:42 PM) Grindars: пинг
- (05:23:42 PM) whitequark: понг
- (05:23:44 PM) whitequark: так
- (05:23:47 PM) whitequark: объясняю
- (05:23:55 PM) whitequark: это как раз та вставка номеров строк
- (05:23:59 PM) whitequark: и названия файла
- (05:24:07 PM) whitequark: чтобы в трейсах не <unknown native>
- (05:24:12 PM) whitequark: а функция.
- (05:24:39 PM) Grindars: ясн
- (05:24:49 PM) Grindars: проще нормально экспортировать нативные
- (05:27:06 PM) whitequark: хмм
- (05:27:08 PM) whitequark: всмысле?
- (05:27:25 PM) Grindars: дефайнить их в V8
- (05:27:45 PM) whitequark: хмм
- (05:27:47 PM) whitequark: нипонел
- (05:27:59 PM) whitequark: натив для колдрубе это жс
- (05:28:05 PM) whitequark: потому что иначе, скажем, на ноде не заведется
- (05:28:07 PM) Grindars: а, вот оно что
- (05:29:36 PM) whitequark: че за фреймворки ты клеил?
- (05:29:51 PM) Grindars: тьфу
- (05:29:53 PM) Grindars: рантаймы
- (05:30:00 PM) Grindars: я их постоянно фреймворками обзываю
- (05:30:01 PM) whitequark: а.
- (05:30:04 PM) Grindars: не знаю, почему
- (05:31:38 PM) Grindars: рантайм теперь не строка, а std::vector<ColdRubyRuntime>
- (05:31:42 PM) whitequark: мда...
- (05:31:53 PM) Grindars: class ColdRubyRuntime {
- public:
- ColdRubyRuntime(std::string code = std::string(), std::string file = std::string()) : m_code(code), m_file(file) {
- }
- inline const std::string &code() const { return m_code; }
- inline const std::string &file() const { return m_file; }
- private:
- std::string m_code, m_file;
- };
- (05:37:54 PM) Grindars: ColdRubyVM: init
- ColdRubyVM: eval
- ColdRubyVM: eval
- ColdRubyVM: eval
- ColdRubyVM: eval
- ColdRubyVM: eval
- ColdRubyVM: eval
- ColdRubyVM: eval
- ColdRubyVM: eval
- ColdRubyVM: eval
- ColdRubyVM: eval
- ColdRubyVM: eval
- ColdRubyVM: eval
- ColdRubyVM: eval
- ColdRubyVM: eval
- ColdRubyVM: eval
- ColdRubyVM: eval
- ColdRubyVM: eval
- ColdRubyVM: eval
- ColdRubyVM: eval
- ColdRubyVM: eval
- ColdRubyVM: eval
- ColdRubyVM: eval
- ColdRubyVM: eval
- ColdRubyVM: eval
- ColdRubyVM: fini
- (05:38:03 PM) whitequark: однако
- (05:38:05 PM) whitequark: сколько евалов
- (05:38:20 PM) Grindars: это я рантайм гружу
- (05:39:49 PM) Grindars: ColdRubyVM: init
- coldruby: 01_ruby.js:564: ReferenceError: $i is not defined
- throw e;
- ~~~~~~~~^
- Stack trace:
- ReferenceError: $i is not defined
- at Object.<anonymous> (<compiled>:61:9)
- at Object.protect (01_ruby.js:559:19)
- at <compiled>:47:15
- at <compiled>:80:2
- ColdRubyVM: fini
- уже лучше, правда?
- (05:41:59 PM) Grindars: ага, вот оно где.
- (05:42:00 PM) Grindars: $i.print("Native exception: " + e.stack + "\n");
- (05:42:13 PM) Grindars: пока временно сделаю $i.print и $i.exit
- (05:42:23 PM) Grindars: чтоб тебе было на чем дебажить
- (05:42:33 PM) whitequark: хм...
- (05:42:36 PM) whitequark: это
- (05:42:40 PM) whitequark: снеси этот код к ебеням
- (05:42:45 PM) whitequark: ща, скажу
- (05:42:46 PM) Grindars: а он где?
- (05:44:06 PM) whitequark: compile.rb!
- (05:44:28 PM) whitequark: ща скажу, как надо
- (05:44:33 PM) Grindars: лучше запуши
- (05:44:33 PM) whitequark: думаю, там почти все надо уебать
- (05:44:35 PM) whitequark: дада
- (05:44:37 PM) whitequark: запушу
- (05:44:44 PM) whitequark: во, смотри
- (05:44:50 PM) whitequark: запусти сам $.create_ruby()
- (05:44:50 PM) Grindars: ты хочешь, чтобы исключения пролетали?
- (05:45:06 PM) whitequark: я хочу, чтобы самый наружний обработчик был у тебя.
- (05:45:16 PM) Grindars: в нативном коде?
- (05:45:19 PM) whitequark: да
- (05:45:31 PM) Grindars: запустить... $.create_ruby()... сам?
- (05:45:33 PM) Grindars: wut,
- (05:45:35 PM) Grindars: *?
- (05:45:40 PM) whitequark: да
- (05:45:42 PM) whitequark: в нативном коде тоже.
- (05:45:48 PM) whitequark: и то есть
- (05:45:50 PM) whitequark: *то есть
- (05:45:51 PM) whitequark: смотри
- (05:45:56 PM) whitequark: после того, как загрузишь рантайм
- (05:46:05 PM) whitequark: делаешь create_ruby и create_toplevel
- (05:46:12 PM) whitequark: кладешь куда-нибудь, чтобы было няшно
- (05:46:35 PM) whitequark: вообще, $ плохое название...
- (05:46:44 PM) whitequark: ща я все перелопачу.
- (05:46:55 PM) Grindars: а что делать с руби и топлевелом?
- (05:46:59 PM) whitequark: сек.
- (05:47:10 PM) Grindars: и протект мне надо делать в нативе или хуй с ним?
- (05:47:24 PM) whitequark: ща, я переделаю и все объясню
- (05:49:05 PM) Grindars: думаю, ColdRubyVM нужен метод
- ColdRuby *createRuby();
- который это сделает
- (05:49:39 PM) Grindars: и уже этот ColdRuby будет везде
- (05:50:03 PM) Grindars: MOAR REFUCKTORING
- (05:51:30 PM) whitequark: ага
- (05:51:57 PM) whitequark: так
- (05:52:02 PM) whitequark: интегрировал топлевел внутрь руби
- (05:52:22 PM) Grindars: здорово, не нужен какой-то левый непонятный объект
- (05:52:27 PM) Grindars: или это глобальный контекст?
- (05:52:32 PM) whitequark: хм?
- (05:52:46 PM) Grindars: как window
- (05:53:04 PM) whitequark: ruby — да
- (05:53:22 PM) whitequark: топлевел просто один для каждого руби
- (05:53:25 PM) whitequark: ну, так проще
- (05:55:16 PM) whitequark:
- (function() {
- var iseq = #{code};
- var new_symbols = #{pool.symbols};
- for(var k in new_symbols) {
- $.symbols[k] = parseInt($.text2sym(new_symbols[k]).value);
- }
- var sf_opts = {
- self: ruby.toplevel,
- ddef: ruby.toplevel,
- cref: [$c.Object],
- };
- return ruby.execute(sf_opts, iseq, []);
- })();
- (05:55:19 PM) whitequark: все, что осталось
- (05:55:24 PM) whitequark: нахуя return?..
- (05:56:37 PM) whitequark: сделай объект ruby
- (05:56:39 PM) whitequark: глобальный
- (05:57:03 PM) Grindars: а как же многорубье?
- (05:57:09 PM) whitequark: мнэээ
- (05:57:12 PM) whitequark: в разных контекстах же
- (05:57:16 PM) whitequark: контекстах в8
- (05:57:22 PM) whitequark: а смысл в одном делать?
- (05:57:27 PM) whitequark: а, не
- (05:57:30 PM) whitequark: сделаю не так.
- (05:57:32 PM) whitequark: ща
- (05:57:48 PM) whitequark: function(ruby) {
- var iseq = #{code};
- var new_symbols = #{pool.symbols};
- for(var k in new_symbols) {
- ruby.symbols[k] = parseInt(ruby.text2sym(new_symbols[k]).value);
- }
- var sf_opts = {
- self: ruby.toplevel,
- ddef: ruby.toplevel,
- cref: [$c.Object],
- };
- ruby.execute(sf_opts, iseq, []);
- }
- (05:57:49 PM) whitequark: вот
- (05:57:56 PM) whitequark: и вот это съевалишь и запустишь
- (05:58:08 PM) Grindars: погодь, я руби не создал
- (05:58:16 PM) Grindars: у меня тут refucktoring
- (05:59:22 PM) Grindars: тогда ColdRuby будет синглтоном ColdRubyVM
- (05:59:53 PM) whitequark: почему бы и нет
- (06:00:47 PM) whitequark: пуш
- (06:01:14 PM) Grindars: а руби = $.create_ruby?
- (06:01:17 PM) whitequark: да
- (06:01:22 PM) Grindars: нет, погоди, руби не будет сиглтоном
- (06:01:28 PM) Grindars: блядь, запутал уже
- (06:02:03 PM) whitequark: а?
- (06:02:21 PM) Grindars: колдруби - не сиглтон, их же несколько таки может быть
- (06:02:25 PM) whitequark: ага
- (06:02:49 PM) Grindars: ruby creation failed
- (06:02:52 PM) Grindars: не удалось создать рубин
- (06:13:18 PM) whitequark: ага
- (06:13:24 PM) whitequark: алхимия)
- (06:15:14 PM) Grindars: coldRuby->ToObject()->Get(v8::String::New("create_ruby")).Cast();
- (06:15:25 PM) whitequark: Cast?
- (06:15:27 PM) Grindars: кастануть руби?
- (06:15:28 PM) whitequark: ага
- (06:15:33 PM) Grindars: точно алхимия
- (06:15:52 PM) Grindars: какой укуренный идиот сочинял там шаблоны
- (06:16:08 PM) whitequark: в в8 жуткие шаблоны
- (06:16:38 PM) Grindars: v8::Handle<v8::Function> create_ruby = v8::Handle<v8::Function>::Cast(coldRuby->ToObject()->Get(v8::String::New("create_ruby")));
- вот так правильно кастовать
- (06:17:36 PM) whitequark: и точно, заклинание
- (06:17:47 PM) Grindars: бугагага
- (06:17:51 PM) whitequark: а?
- (06:17:57 PM) Grindars: ColdRubyVM: init
- <unknown>:-1: Uncaught TypeError: Cannot convert null to object
- <main>: [BUG] Segmentation fault
- ruby 1.9.2p136 (2010-12-25 revision 30365) [i686-linux]
- -- control frame ----------
- c:0001 p:0000 s:0002 b:0002 l:001b34 d:001b34 TOP
- ---------------------------
- -- C level backtrace information -------------------------------------------
- /home/grindars/.rvm/rubies/ruby-1.9.2-p136/lib/libruby.so.1.9(rb_vm_bugreport+0x72) [0xb749a6c2]
- /home/grindars/.rvm/rubies/ruby-1.9.2-p136/lib/libruby.so.1.9(+0x56011) [0xb7374011]
- /home/grindars/.rvm/rubies/ruby-1.9.2-p136/lib/libruby.so.1.9(rb_bug+0x3a) [0xb737410a]
- /home/grindars/.rvm/rubies/ruby-1.9.2-p136/lib/libruby.so.1.9(+0x10812c) [0xb742612c]
- [0xb78a540c]
- [NOTE]
- You may have encountered a bug in the Ruby interpreter or extension libraries.
- Bug reports are welcome.
- For details: http://www.ruby-lang.org/bugreport.html
- Аварийный останов
- (06:18:04 PM) Grindars: пойду срепортю
- (06:18:04 PM) whitequark: уронил.
- (06:18:08 PM) whitequark: неа
- (06:18:10 PM) Grindars: ты посмотри, кто трейсит
- (06:18:13 PM) Grindars: руби!
- (06:18:15 PM) whitequark: ну да
- (06:18:16 PM) Grindars: руби оттрейсил в8
- (06:18:18 PM) whitequark: ой
- (06:18:25 PM) whitequark: лол
- (06:23:16 PM) Grindars: v8::Handle<v8::Function> create_ruby = v8::Handle<v8::Function>::Cast(
- v8::Handle<v8::Object>::Cast(
- m_context->Global()->Get(
- v8::String::New("$")
- )
- )->Get(
- v8::String::New("create_ruby")
- )
- );
- level 2
- (06:23:30 PM) whitequark: еб...
- (06:23:52 PM) Grindars: это я ебанулся или в8?
- (06:23:56 PM) whitequark: в8.
- (06:23:59 PM) whitequark: геты сверни в одну строку
- (06:24:01 PM) whitequark: лучше будет
- (06:24:26 PM) Grindars: пока кастуется только аборт
- (06:25:15 PM) whitequark: а поцчему?
- (06:25:20 PM) Grindars: ага, try_catch тут наооборот не нужен.
- (06:25:35 PM) Grindars: тут надо create_ruby.IsEmpty
- (06:28:09 PM) whitequark: о...
- (06:28:24 PM) Grindars: Call (Handle< Object > recv, int argc, Handle< Value > argv[])
- (06:28:30 PM) Grindars: recv == this?
- (06:28:35 PM) Grindars: == null?
- (06:28:48 PM) Grindars: а, нулл нельзя
- (06:28:50 PM) Grindars: $?
- (06:28:55 PM) whitequark: а?
- (06:28:58 PM) whitequark: $?
- (06:29:06 PM) Grindars: recv = $ ?
- (06:29:29 PM) whitequark: да
- (06:33:07 PM) ***whitequark проходит blobwars
- (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>)’
- /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>*)
- (06:33:36 PM) whitequark: хм.
- (06:33:40 PM) whitequark: вот у меня вечно эта хуйня
- (06:33:58 PM) whitequark: что-нибудь не проходит
- (06:35:17 PM) Grindars: язык шаблонов си++ плохо приделан к си++ и вечно отваливается где-нибудь
- (06:35:18 PM) Grindars: он функциональный, кстати
- (06:37:38 PM) whitequark: ага
- (06:37:40 PM) whitequark: знаю
- (06:39:50 PM) Grindars: да иди ты нахуй (, v8)! подсунул ему NULL.
- (06:39:57 PM) Grindars: прокатило
- (06:40:07 PM) Grindars: настоящий NULL вместо списка аргументов
- (06:41:12 PM) whitequark: ага
- (06:42:06 PM) Grindars: IMMA MERGIN' UR RUBY
- (06:44:31 PM) Grindars: вылез какой-то баг
- (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
- /home/grindars/coldruby-rewrite/lib/commands/compile.rb:97: syntax error, unexpected $end, expecting '}'
- " line: #{lasY
- там, ессно, не это.
- (06:45:21 PM) whitequark: странно
- (06:45:26 PM) whitequark: может, это твой NULL?
- (06:45:32 PM) Grindars: это после пулла
- (06:45:36 PM) Grindars: вообще другое место
- (06:45:36 PM) whitequark: а.
- (06:45:40 PM) whitequark: странно
- (06:46:10 PM) whitequark: 2217 знаков это
- (06:46:31 PM) whitequark: хз.
- (06:46:54 PM) Grindars: я знаю
- (06:46:57 PM) Grindars: но сначала уточню
- (06:47:22 PM) whitequark: ой-ой
- (06:47:32 PM) Grindars: std::string line(content, size); не делает deep copy.
- (06:47:37 PM) whitequark: о.
- (06:47:45 PM) whitequark: вытяни
- (06:47:52 PM) whitequark: я в магаз за кофе
- (06:50:33 PM) Grindars: делает копию, это я идиот
- (06:56:05 PM) Grindars:
- ColdRubyVM: init
- coldruby: ruby creation failed: 01_ruby.js:1106: TypeError: Cannot read property 'internal_constants' of undefined
- klass: ruby.internal_constants.Object,
- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^
- Stack trace:
- TypeError: Cannot read property 'internal_constants' of undefined
- at Object.create_ruby (01_ruby.js:1106:32)
- (06:56:27 PM) Grindars has signed off.
- (06:56:37 PM) Grindars has signed on.
- (06:58:13 PM) Grindars: - klass: ruby.internal_constants.Object,
- + klass: $c.Object,
- наверное, так
- (06:58:38 PM) Grindars: нет,
- this.internal_constants.Object,
- (07:10:45 PM) whitequark: ага
- (07:10:55 PM) Grindars: почини и запушь
- (07:11:00 PM) whitequark: ок, ща
- (07:11:15 PM) Grindars: ColdRubyVM: init
- coldruby: <compiled>:1: SyntaxError: Illegal return statement
- return (function(ruby) {
- ^
- Stack trace:
- SyntaxError: Illegal return statement
- at <compiled>:1:1
- ColdRubyVM: fini
- (07:11:23 PM) whitequark: хм.
- (07:11:28 PM) whitequark: а как вернуть что-то из евала?
- (07:11:38 PM) Grindars: просто function() { }
- (07:11:42 PM) whitequark: ок, ща будет
- (07:11:56 PM) Grindars: открываю compile.rb
- (07:11:58 PM) Grindars: иксы падают
- (07:12:01 PM) whitequark: хех
- (07:12:01 PM) Grindars: рестартатся
- (07:12:03 PM) Grindars: автологин
- (07:12:05 PM) Grindars: авторестор
- (07:12:09 PM) Grindars: открылось все, как было
- (07:12:16 PM) Grindars: everything is working
- (07:12:20 PM) whitequark: если не знать, то и не заметишь?
- (07:12:23 PM) Grindars: да
- (07:12:33 PM) Grindars: моргнул экран, две секунды хуйни и пашет
- (07:12:40 PM) whitequark: оке
- (07:12:41 PM) whitequark: пуш
- (07:12:52 PM) whitequark: а ща коооофий
- (07:13:39 PM) Grindars: опиздинительно
- (07:13:44 PM) Grindars: kate даже историю undo сохранил
- (07:14:48 PM) Grindars: а скобки кто ставить будет?
- (07:14:53 PM) Grindars: (function() { })
- (07:17:48 PM) whitequark: а.
- (07:18:16 PM) whitequark: оке
- (07:18:24 PM) whitequark: коооофий.
- (07:18:31 PM) whitequark: гадость какая-то растворимая.
- (07:18:54 PM) whitequark: FFUUUUUUUU~~~~
- (07:19:10 PM) Grindars: v8::TryCatch try_catch;
- v8::Handle<v8::Value> args[] = {
- ruby->ruby()
- };
- func->Call(m_context->Global(), 1, args);
- if(try_catch.HasCaught()) {
- formatException(&try_catch);
- return false;
- }
- (07:19:13 PM) whitequark: какая мерзость
- (07:19:16 PM) whitequark: то есть кофе.
- (07:19:18 PM) whitequark: ага
- (07:19:24 PM) whitequark: try_catch забавны
- (07:19:26 PM) whitequark: *забавный
- (07:19:35 PM) Grindars: т.е. ебнутый на всю голову
- (07:19:40 PM) Grindars: зато не прыгает, аки руби
- (07:19:43 PM) whitequark: угу
- (07:19:49 PM) Grindars: и не юзает це++-эксепшны
- (07:19:50 PM) whitequark: руби не только для этого прыгает
- (07:19:51 PM) whitequark: еще фиберы
- (07:19:56 PM) Grindars: в руби пиздец
- (07:20:22 PM) whitequark: и лямбды
- (07:20:23 PM) whitequark: почему?
- (07:20:26 PM) whitequark: там все цивильно
- (07:20:36 PM) Grindars: ColdRubyVM: init
- coldruby: <compiled>:42: TypeError: Object (function(ruby) {
- var iseq = {
- klass: $c.InstructionSequence,
- info: {
- arg_size: 0,
- local_size: 1,
- stack_max: 2,
- catch_table: [
- ],
- args: {
- argc: 0,
- rest: -1,
- block: -1,
- },
- func: '<compiled>',
- file: './hello.rb',
- line: 1,
- path: '',
- type: 'top',
- locals: []
- },
- 0: function() {
- var sf = this.context.sf;
- sf.line = 3;
- sf.stack[sf.sp++] = this.builtin.Qnil;
- sf.stack[sf.sp++] = "Hello, World!";
- var args = sf.stack.slice(sf.sp - 1, sf.sp);
- sf.sp -= 1;
- var ret = this.funcall2(sf.stack[--sf.sp] == this.builtin.Qnil ? null : sf.stack[sf.sp], this.symbols[60808], args, null, false);
- sf.stack[sf.sp++] = ret;
- return null;
- }
- };
- var new_symbols = { 60808: 'print' };
- for(var k in new_symbols) {
- ruby.symbols[k] = parseInt(ruby.text2sym(new_symbols[k]).value);
- }
- var sf_opts = {
- self: ruby.toplevel,
- ddef: ruby.toplevel,
- cref: [ruby.c.Object],
- };
- ruby.execute(sf_opts, iseq, []);
- })
- has no method 'text2sym'
- ruby.symbols[k] = parseInt(ruby.text2sym(new_symbols[k]).value);
- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^
- Stack trace:
- TypeError: Object (function(ruby) {
- var iseq = {
- klass: $c.InstructionSequence,
- info: {
- arg_size: 0,
- local_size: 1,
- stack_max: 2,
- catch_table: [
- ],
- args: {
- argc: 0,
- rest: -1,
- block: -1,
- },
- func: '<compiled>',
- file: './hello.rb',
- line: 1,
- path: '',
- type: 'top',
- locals: []
- },
- 0: function() {
- var sf = this.context.sf;
- sf.line = 3;
- sf.stack[sf.sp++] = this.builtin.Qnil;
- sf.stack[sf.sp++] = "Hello, World!";
- var args = sf.stack.slice(sf.sp - 1, sf.sp);
- sf.sp -= 1;
- var ret = this.funcall2(sf.stack[--sf.sp] == this.builtin.Qnil ? null : sf.stack[sf.sp], this.symbols[60808], args, null, false);
- sf.stack[sf.sp++] = ret;
- return null;
- }
- };
- var new_symbols = { 60808: 'print' };
- for(var k in new_symbols) {
- ruby.symbols[k] = parseInt(ruby.text2sym(new_symbols[k]).value);
- }
- var sf_opts = {
- self: ruby.toplevel,
- ddef: ruby.toplevel,
- cref: [ruby.c.Object],
- };
- ruby.execute(sf_opts, iseq, []);
- })
- has no method 'text2sym'
- at <compiled>:42:37
- ColdRubyVM: fini
- (07:20:44 PM) whitequark: мнэээ
- (07:20:49 PM) Grindars: ЧЯДНТ?
- (07:20:50 PM) whitequark: хммм
- (07:20:56 PM) Grindars: ruby = результат create_ruby()
- (07:20:58 PM) whitequark: точно нету?
- (07:21:03 PM) Grindars: кого?
- (07:21:08 PM) whitequark: метода.
- (07:21:19 PM) Grindars: $.text2sym = function(name) {
- for(var k in $.symbols) {
- if($.symbols[k] == name) {
- return $.id2sym(k);
- }
- }
- var symbol = this.id2sym($.symbols.last--);
- $.symbols[symbol.value] = name;
- return symbol;
- };
- (07:21:26 PM) whitequark: хмм, и правда
- (07:21:27 PM) whitequark: аа
- (07:21:32 PM) Grindars: а ruby точно унаследовал $?
- (07:21:35 PM) whitequark: это потому что сначала тебе надо рантайм захуячить
- (07:21:38 PM) whitequark: ну
- (07:21:40 PM) Grindars: всмысле?
- (07:21:50 PM) whitequark: он определяется внутри рантайма
- (07:21:50 PM) Grindars: рантайм я загрузил весь
- (07:21:53 PM) whitequark: хмм.
- (07:21:53 PM) Grindars: потом create_ruby
- (07:21:57 PM) whitequark: а есть там поле builtin?
- (07:22:15 PM) Grindars: потом евальнул исходник
- (07:22:16 PM) Grindars: потом его вызвал
- (07:22:23 PM) whitequark: WORKSFORME...
- (07:22:25 PM) Grindars: открылся портал и лезет какая-то хуйня
- (07:22:29 PM) whitequark: ага
- (07:22:51 PM) Grindars: у тебя ruby не включает в себя методы $
- (07:22:59 PM) whitequark: create_ruby: function() {
- var ruby = {
- __proto__: this,
- context: {
- sf: null,
- },
- toplevel: {
- klass: this.internal_constants.Object,
- class_variables: {},
- ivs: {},
- toplevel: true
- }
- };
- ruby.define_singleton_method(ruby.toplevel, 'to_s', 0, function(self) {
- return "main";
- });
- return ruby;
- },
- (07:23:08 PM) Grindars: я вижу __proto__
- (07:23:14 PM) whitequark: да.
- (07:23:20 PM) whitequark: и у меня это работало
- (07:23:27 PM) whitequark: а у тебя почему-то не пашет
- (07:23:43 PM) whitequark: господи, какая же мерзость
- (07:24:56 PM) Grindars: кажется, я зря в scope загнал
- (07:25:31 PM) whitequark: вероятно
- (07:25:35 PM) whitequark: $ сдохло?
- (07:25:47 PM) Grindars: БУУУУУУМ
- (07:25:54 PM) whitequark: мде
- (07:25:54 PM) whitequark: это
- (07:25:57 PM) whitequark: а почему?
- (07:25:57 PM) Grindars: <main>: [BUG] Segmentation fault
- ruby 1.9.2p136 (2010-12-25 revision 30365) [i686-linux]
- -- control frame ----------
- c:0001 p:0000 s:0002 b:0002 l:000c44 d:000c44 TOP
- ---------------------------
- -- C level backtrace information -------------------------------------------
- /home/grindars/.rvm/rubies/ruby-1.9.2-p136/lib/libruby.so.1.9(rb_vm_bugreport+0x72) [0xb747e6c2]
- /home/grindars/.rvm/rubies/ruby-1.9.2-p136/lib/libruby.so.1.9(+0x56011) [0xb7358011]
- /home/grindars/.rvm/rubies/ruby-1.9.2-p136/lib/libruby.so.1.9(rb_bug+0x3a) [0xb735810a]
- /home/grindars/.rvm/rubies/ruby-1.9.2-p136/lib/libruby.so.1.9(+0x10812c) [0xb740a12c]
- [0xb788940c]
- [(nil)]
- (07:26:00 PM) whitequark: референс же есть
- (07:26:06 PM) whitequark: а.
- (07:26:14 PM) Grindars: это если убрать scope
- (07:26:24 PM) Grindars: стека нету
- (07:26:27 PM) Grindars: не существоват
- (07:26:46 PM) whitequark: *** libruby detected
- (07:27:15 PM) whitequark: о, Order Shipped
- (07:27:48 PM) Grindars: Stack-allocated class which sets the execution context for all operations executed within a local scope.
- (07:28:54 PM) Grindars: coldruby - это ядреная смесь руби, жс и с++
- (07:28:57 PM) Grindars: на стыках лулзы
- (07:29:18 PM) whitequark: ага
- (07:31:36 PM) Grindars: Exiting the current context restores the context that was in place when entering the current context.
- (07:31:46 PM) Grindars: блядь.
- (07:31:54 PM) Grindars: я после инита вышел.
- (07:31:56 PM) Grindars: руби снессы
- (07:32:04 PM) Grindars: *снесся
- (07:32:57 PM) Grindars: что делать?
- (07:34:36 PM) whitequark: ща
- (07:35:01 PM) whitequark: так.
- (07:35:06 PM) whitequark: после инита...
- (07:35:07 PM) whitequark: ща, гляну
- (07:35:45 PM) whitequark: может, делать инит в корне?
- (07:36:01 PM) Grindars: тогда инстансы смогут портить друг друга
- (07:36:05 PM) whitequark: хмм.
- (07:36:15 PM) whitequark: инстансы компиля?
- (07:36:22 PM) whitequark: сделай синглетоном.
- (07:36:22 PM) Grindars: рубей
- (07:36:25 PM) Grindars: нет
- (07:36:29 PM) Grindars: не сделаю
- (07:36:31 PM) whitequark: думаю, иначе никак
- (07:36:31 PM) Grindars: я придумал.
- (07:36:33 PM) whitequark: хм
- (07:36:34 PM) whitequark: ну?
- (07:37:59 PM) Grindars: если грубо,
- Local<Object> global = context.Global();
- context.DetachGlobal();
- context.Exit();
- context.ReattachGlobal(global);
- (07:39:04 PM) whitequark: извращенец
- (07:40:01 PM) whitequark: слух, можно ресайзить подмонтированную е3 на лвм?
- (07:40:10 PM) Grindars: да
- (07:40:26 PM) Grindars: resize2fs
- (07:40:31 PM) whitequark: да знаю
- (07:40:37 PM) whitequark: тут один хуй гонит, что может все сломаться
- (07:40:40 PM) whitequark: но по-моему пиздит
- (07:40:43 PM) Grindars: может
- (07:40:46 PM) Grindars: если процесс прервется
- (07:40:49 PM) whitequark: именно из-за лвм
- (07:40:52 PM) Grindars: -KILL, -PWR, etc
- (07:40:54 PM) whitequark: а не само по себе
- (07:40:56 PM) Grindars: нет, из-за лвм не может
- (07:40:56 PM) whitequark: -PWR?)
- (07:41:05 PM) whitequark: знаю, что такой есть
- (07:41:09 PM) whitequark: он разве KILL по дефолту?
- (07:41:11 PM) whitequark: игнор же
- (07:41:14 PM) whitequark: SIGIGN, короче
- (07:41:33 PM) Grindars: SIGPWR 29,30,19 Term Power failure (System V)
- (07:41:36 PM) Grindars: он Term
- (07:41:42 PM) whitequark: хм.
- (07:41:45 PM) whitequark: надо же
- (07:41:51 PM) whitequark: то есть убьет все, кроме инита?
- (07:42:11 PM) Grindars: линух не рассылает его сам
- (07:42:13 PM) whitequark: а
- (07:42:38 PM) Grindars: пдп-11 вырубалась через <10 сек после SIGPWR
- (07:42:39 PM) Grindars: причем память сохранялась, лол.
- (07:42:47 PM) whitequark: это как?
- (07:42:58 PM) Grindars: core memory
- (07:43:02 PM) Grindars: ей похуй.
- (07:43:08 PM) whitequark: ее не надо обновлять разве?
- (07:43:11 PM) Grindars: неа
- (07:43:13 PM) whitequark: ни хуя себе там был ток записи тогда
- (07:43:17 PM) Grindars: амперы
- (07:43:21 PM) whitequark: ага
- (07:43:30 PM) Grindars: проволочки перегорали, если читать одну ячейку
- (07:43:33 PM) whitequark: ага
- (07:43:35 PM) whitequark: HLT
- (07:43:38 PM) whitequark: HCF, точнее
- (07:43:51 PM) whitequark: LTLTLTLTLTLTLTLTLTLTLTLTLTLTLTLTLTLT
- (07:43:54 PM) whitequark: ня.
- (07:44:07 PM) Grindars: как сказать сраному руби
- (07:44:12 PM) Grindars: чтобы не трогал мои сигналы?
- (07:44:15 PM) Grindars: не хукал их, блядь
- (07:44:15 PM) whitequark: хм...
- (07:44:18 PM) Grindars: заебал
- (07:44:19 PM) whitequark: ща
- (07:44:22 PM) Grindars: что он доебался до них
- (07:47:09 PM) whitequark: че-то жруби смешался со всем остальным
- (07:47:26 PM) whitequark: в rxr
- (07:47:29 PM) whitequark: пересоздать базу чтоль
- (07:47:33 PM) Grindars: а я тебе говорил
- (07:47:38 PM) whitequark: да я знаю
- (07:47:41 PM) whitequark: думал, крон поправит
- (07:47:43 PM) whitequark: не поправил.
- (07:48:25 PM) whitequark: хм
- (07:48:31 PM) whitequark: он всегда хукает сигналы, походу
- (07:48:31 PM) whitequark: ща
- (07:48:42 PM) whitequark: ага
- (07:48:45 PM) whitequark: ему для стекоебства нужно
- (07:49:13 PM) whitequark: да.
- (07:49:23 PM) whitequark: так
- (07:49:26 PM) whitequark: ща снесу базу, наверное
- (07:50:06 PM) Grindars: я убрал вход-выход из контекста: вход при старте, выход при завершении колдруби для теста
- (07:50:08 PM) Grindars: толку ноль.
- (07:50:20 PM) whitequark: блин
- (07:50:23 PM) whitequark: у меня ж работало
- (07:50:25 PM) whitequark: что изменилось?
- (07:50:34 PM) Grindars: то, что у меня другой двиг?
- (07:50:38 PM) whitequark: эээ
- (07:50:40 PM) whitequark: v8?
- (07:50:43 PM) Grindars: в8
- (07:50:46 PM) Grindars: обертка другая
- (07:50:49 PM) whitequark: хм.
- (07:50:57 PM) whitequark: вот и надо понять, где она юзает его не так
- (07:53:19 PM) whitequark: так
- (07:53:21 PM) whitequark: обновляю базу
- (07:53:40 PM) Grindars: ruby.text2sym _есть_
- (07:53:44 PM) Grindars: я проверил из натива
- (07:53:45 PM) whitequark: хм.
- (07:53:48 PM) whitequark: так что ему не нравится?
- (07:53:59 PM) Grindars: а this случайно не надо в ruby,
- (07:54:01 PM) Grindars: *?
- (07:54:03 PM) whitequark: хммм
- (07:54:07 PM) whitequark: что?
- (07:54:49 PM) Grindars: может, хуевый хендл?..
- (07:54:53 PM) whitequark: хм.
- (07:55:38 PM) whitequark: хз
- (07:55:41 PM) whitequark: я купил вот это
- (07:55:42 PM) whitequark: http://www.dealextreme.com/p/10544
- (07:56:09 PM) Grindars: мда
- (07:56:11 PM) whitequark: подарю одной знакомой. скажу, что это внешние, хехе
- (07:56:17 PM) whitequark: хочу посмотреть на ее лицо
- (07:56:30 PM) Grindars: напомнило xkcd
- (07:56:33 PM) whitequark: ага
- (07:56:50 PM) whitequark: аж две штуки
- (07:56:59 PM) whitequark: лол, какая упаковка
- (07:56:59 PM) whitequark: http://www.dealextreme.com/feedbacks/browseCustomerPhotos.dx/sku.10544~id.47534
- (07:57:00 PM) Grindars: как определить тип переменной в жс
- (07:57:03 PM) whitequark: type obj
- (07:57:10 PM) Grindars: если вывода нет?
- (07:57:18 PM) whitequark: запиши в переменную
- (07:57:19 PM) whitequark: ЛОЛ
- (07:57:20 PM) Grindars: только исключения
- (07:57:22 PM) whitequark: choking hazard
- (07:57:26 PM) whitequark: это же как надо жрать!!
- (07:58:35 PM) Grindars: как мне кинуть исключение с типом переменной?
- (07:58:44 PM) whitequark: throw (type obj);
- (07:58:49 PM) whitequark: и все
- (07:58:49 PM) Grindars: throw new error
- (07:58:56 PM) Grindars: нет, это це
- (07:59:01 PM) whitequark: throw new error; fuck with yourself
- (07:59:04 PM) Grindars: блядь, слишком много языком в проекте
- (07:59:07 PM) Grindars: *языков
- (07:59:15 PM) whitequark: ruby, js, c++, c
- (07:59:21 PM) whitequark: полиглотский проект )
- (07:59:30 PM) Grindars: coldruby: <compiled>:2: SyntaxError: Unexpected identifier
- throw (type ruby);
- ~~~~~~~~~~~~~~^^^^
- Stack trace:
- SyntaxError: Unexpected identifier
- (07:59:53 PM) whitequark: хм...
- (07:59:58 PM) whitequark: typeof
- (08:00:19 PM) Grindars: terminate called after throwing an instance of 'std::logic_error'
- what(): basic_string::_S_construct null not valid
- Аварийный останов
- (08:00:20 PM) whitequark: https://github.com/blog/843-the-merge-button
- (08:00:23 PM) whitequark: еб.
- (08:00:26 PM) whitequark: what()?!
- (08:00:51 PM) Grindars: я у колдруби пока видел четыре разных вида исключений.
- (08:03:46 PM) Grindars: coldruby: <compiled>:2: string
- throw (typeof ruby);
- ~~^
- (08:03:50 PM) Grindars: ruby - строка
- (08:03:58 PM) Grindars: руби, блядь, строка
- (08:03:58 PM) whitequark: бред
- (08:04:00 PM) Grindars: какого хуя
- (08:04:06 PM) Grindars: #define STD_STRING(s) ({v8::String::Utf8Value utf8_val(s); *utf8_val ? std::string(*utf8_val) : std::string(); })
- (08:04:13 PM) Grindars: какая-то функциональщина в моем си
- (08:04:16 PM) whitequark: ага
- (08:04:24 PM) Grindars: кажется, я повредил мозг
- (08:05:04 PM) Grindars: а разве typeof null == null?
- (08:05:09 PM) Grindars: *== object?
- (08:05:14 PM) whitequark: object
- (08:05:25 PM) Grindars: у в8 нулл глобальный
- (08:05:28 PM) Grindars: можно взять ссылку
- (08:05:30 PM) Grindars: переебать его
- (08:05:36 PM) Grindars: и null останется таким
- (08:05:41 PM) whitequark: еб.
- (08:05:47 PM) Grindars: так же и true/false
- (08:06:20 PM) Grindars: coldruby: <compiled>:2: (function(ruby) {
- throw (ruby);
- var iseq = {
- klass: $c.InstructionSequence,
- info: {
- arg_size: 0,
- local_size: 1,
- stack_max: 2,
- catch_table: [
- ],
- args: {
- argc: 0,
- rest: -1,
- block: -1,
- },
- func: '<compiled>',
- file: './hello.rb',
- line: 1,
- path: '',
- type: 'top',
- locals: []
- },
- 0: function() {
- var sf = this.context.sf;
- sf.line = 3;
- sf.stack[sf.sp++] = this.builtin.Qnil;
- sf.stack[sf.sp++] = "Hello, World!";
- var args = sf.stack.slice(sf.sp - 1, sf.sp);
- sf.sp -= 1;
- var ret = this.funcall2(sf.stack[--sf.sp] == this.builtin.Qnil ? null : sf.stack[sf.sp], this.symbols[60808], args, null, false);
- sf.stack[sf.sp++] = ret;
- return null;
- }
- };
- var new_symbols = { 60808: 'print' };
- for(var k in new_symbols) {
- ruby.symbols[k] = parseInt(ruby.text2sym(new_symbols[k]).value);
- }
- var sf_opts = {
- self: ruby.toplevel,
- ddef: ruby.toplevel,
- cref: [ruby.c.Object],
- };
- ruby.execute(sf_opts, iseq, []);
- })
- throw (ruby);
- ~~^
- (08:06:27 PM) Grindars: что за хуйня
- (08:06:31 PM) Grindars: почему руби - quine
- (08:06:38 PM) whitequark: quine?!
- (08:06:51 PM) Grindars: да
- (08:06:53 PM) whitequark: чиво?
- (08:06:58 PM) whitequark: может, ты его не съевалил?
- (08:07:12 PM) Grindars: а как тогда лямбда исполняется?
- (08:07:17 PM) whitequark: хм.
- (08:07:20 PM) whitequark: лямбда.
- (08:07:25 PM) Grindars: я ее евальнул и вызвал
- (08:07:30 PM) whitequark: оно же падает
- (08:07:33 PM) Grindars: неа
- (08:07:35 PM) Grindars: уже нет
- (08:07:41 PM) Grindars: it's stable
- (08:08:05 PM) Grindars: v8::Handle<v8::Value> args[] = {
- ruby->ruby()
- };
- func->Call(m_context->Global(), 1, args);
- (08:09:42 PM) Grindars: сраные ссылки
- (08:09:54 PM) Grindars: я поместил лямбду в ту же переменную, куда поместил руби
- (08:10:00 PM) whitequark: вот.
- (08:10:16 PM) Grindars: погоди, что?!
- (08:11:43 PM) Grindars: <main>: [BUG] Segmentation fault
- ruby 1.9.2p136 (2010-12-25 revision 30365) [i686-linux]
- -- control frame ----------
- c:0001 p:0000 s:0002 b:0002 l:0009c4 d:0009c4 TOP
- ---------------------------
- -- C level backtrace information -------------------------------------------
- /home/grindars/.rvm/rubies/ruby-1.9.2-p136/lib/libruby.so.1.9(rb_vm_bugreport+0x72) [0xb73406c2]
- /home/grindars/.rvm/rubies/ruby-1.9.2-p136/lib/libruby.so.1.9(+0x56011) [0xb721a011]
- /home/grindars/.rvm/rubies/ruby-1.9.2-p136/lib/libruby.so.1.9(rb_bug+0x3a) [0xb721a10a]
- /home/grindars/.rvm/rubies/ruby-1.9.2-p136/lib/libruby.so.1.9(+0x10812c) [0xb72cc12c]
- [0xb774b40c]
- [NOTE]
- You may have encountered a bug in the Ruby interpreter or extension libraries.
- Bug reports are welcome.
- For details: http://www.ruby-lang.org/bugreport.html
- (08:11:47 PM) Grindars: опять.
- (08:11:53 PM) whitequark: хм.
- (08:11:55 PM) whitequark: и почему же?
- (08:12:01 PM) Grindars: без понятия
- (08:12:04 PM) Grindars: я + гц = хуйня
- (08:13:38 PM) Grindars: coldruby: <compiled>:42: TypeError: Object . has no method 'text2sym'
- ruby.symbols[k] = parseInt(ruby.text2sym(new_symbols[k]).value);
- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^
- Stack trace:
- TypeError: Object . has no method 'text2sym'
- at <compiled>:42:37
- (08:13:42 PM) Grindars: обжект кто?
- (08:14:06 PM) Grindars: аа, я затер лямбду чем-то
- (08:14:52 PM) whitequark: опять.
- (08:14:55 PM) whitequark: еб...
- (08:15:08 PM) whitequark: так
- (08:18:53 PM) Grindars: нашел истинную причину.
- (08:19:10 PM) Grindars: Persistent (Handle< S > that)
- "Casts" a plain handle which is known to be a persistent handle to a persistent handle.
- какой блядь мудак сделал так.
- (08:19:22 PM) Grindars: чтобы создать постоянный хендл, надо v8::Persistent<v8::Object>::New(ruby)
- (08:19:32 PM) Grindars: иначе хендл будет показывать в рандомный объект на куче
- (08:19:40 PM) Grindars: и будет лезть разная хуйня, иногда правильная
- (08:20:17 PM) Grindars: отсюда и креши - иногда указывает хуй знает куда
- (08:20:28 PM) Grindars: костыли тоже не нужны, context-ы заработали
- (08:21:49 PM) Grindars:
- coldruby: 01_ruby.js:990: ReferenceError: $i is not defined
- } else throw e; // dooooown to the basement
- ~~~~~~~~~~~~~~~~~^
- Stack trace:
- ReferenceError: $i is not defined
- at Object.<anonymous> (06_kernel.js:103:5)
- at Object.execute (01_ruby.js:1058:27)
- at Object.funcall2 (01_ruby.js:701:17)
- at Object.<anonymous> (<compiled>:34:22)
- at Object.execute (01_ruby.js:984:33)
- at <compiled>:51:8
- (08:27:08 PM) Grindars has gone away.
- (08:27:08 PM) Grindars has become idle.
- (08:30:45 PM) whitequark: $ grep '$i' runtime/ -Rn
- runtime/20_time.js:4: return $.builtin.make_float($i.time_now());
- runtime/06_kernel.js:78:// Requires interpreter support at $i
- runtime/06_kernel.js:93: $i.print(this.funcall(args[i], 'to_s') + "\n");
- runtime/06_kernel.js:96: $i.print("\n");
- runtime/06_kernel.js:103: $i.print(this.funcall(args[i], 'to_s'));
- runtime/06_kernel.js:109: var str = $i.gets();
- (08:31:43 PM) whitequark: я в душ.
- (08:49:10 PM) Grindars is no longer idle.
- (08:49:11 PM) Grindars is no longer away.
- (08:49:21 PM) Grindars: а я оттуда
- (08:54:30 PM) whitequark: так
- (08:55:12 PM) Grindars: я ща хочу попробовать сделать так, чтобы информация о строках из руби проходила в в8
- (08:55:27 PM) Grindars: чтобы в трейсе было file.rb:2, а не <compiled>:666
- (08:55:50 PM) whitequark: ага
- (08:55:55 PM) whitequark: вроде, в ребилженной базе говна нет
- (08:56:00 PM) whitequark: интересно, почему оно сломалось.
- (08:56:05 PM) Grindars: завтра опять refactoring day, а потом коммит
- (08:56:35 PM) Grindars: 0: function() {
- var sf = this.context.sf;
- sf.line = 3;
- sf.stack[sf.sp++] = this.builtin.Qnil;
- sf.stack[sf.sp++] = "Hello, World!";
- var args = sf.stack.slice(sf.sp - 1, sf.sp);
- sf.sp -= 1;
- var ret = this.funcall2(sf.stack[--sf.sp] == this.builtin.Qnil ? null : sf.stack[sf.sp], this.symbols[60808], args, null, false);
- sf.stack[sf.sp++] = ret;
- return null;
- }
- (08:56:51 PM) whitequark: пашет?
- (08:56:54 PM) Grindars: нет
- (08:57:00 PM) Grindars: я смотрю на информацию о строках
- (08:57:03 PM) whitequark: а.
- (08:57:07 PM) whitequark: Lua built more than expected in the area that he has heard. Rubything to replace.
- (08:57:09 PM) whitequark: что?!
- (08:57:17 PM) whitequark: Ruby to replace?!
- (08:57:25 PM) Grindars: угу, замена руби
- (08:57:40 PM) Grindars: предполагаю, в ембеддинге (как железки, так и софт)
- (08:57:47 PM) whitequark: не
- (08:57:48 PM) whitequark: Rite же
- (08:57:53 PM) Grindars: блядь, где он?
- (08:57:57 PM) Grindars: через N лет будет?
- (08:57:57 PM) whitequark: он его пилит
- (08:57:58 PM) whitequark: сказал же
- (08:57:59 PM) whitequark: нет
- (08:58:00 PM) Grindars: вот-вот
- (08:58:00 PM) whitequark: есть план
- (08:58:02 PM) Grindars: ты бы попробовал куда-нибудь MRI заембеддить
- (08:58:06 PM) whitequark: за который ему платят бабло
- (08:58:06 PM) Grindars: а потом lua
- (08:58:08 PM) whitequark: и он пилит.
- (08:58:16 PM) whitequark: будет в середине-конце этого года
- (08:58:17 PM) Grindars: после луа MRI - сущий ад
- (08:58:28 PM) Grindars: и израиль
- (08:58:59 PM) whitequark: гы
- (08:59:05 PM) whitequark: twitter.com/matz_translated
- (08:59:06 PM) whitequark: лол
- (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.
- (08:59:40 PM) whitequark: т.е. два месяца назад закончил г
- (08:59:41 PM) whitequark: *гц
- (08:59:52 PM) Grindars: у в8 все равно сосет
- (09:00:29 PM) whitequark: rite?
- (09:00:31 PM) Grindars: да
- (09:00:35 PM) whitequark: не обязательно
- (09:00:37 PM) whitequark: ты ж еще не видел
- (09:00:41 PM) Grindars: если не будет сосать, то гугл купит matz'а
- (09:00:48 PM) whitequark: возможно
- (09:01:00 PM) whitequark: Programmers saying "no bugs malloc" may use the malloc is replaced code compilers, operating systems, and others.
- (09:01:01 PM) whitequark: хм.
- (09:01:12 PM) Grindars: это чем переведено?
- (09:01:15 PM) Grindars: смысл ускользает
- (09:01:16 PM) whitequark: это человек
- (09:01:18 PM) whitequark: гугл переводит хуже
- (09:01:32 PM) Grindars: may use the malloc is replaced code
- (09:01:36 PM) whitequark: ага
- (09:01:36 PM) Grindars: ебнуто как-то
- (09:01:37 PM) whitequark: хуета
- (09:01:50 PM) whitequark: ы
- (09:01:50 PM) whitequark: http://cho45.stfuawsc.com/jsdeferred/doc/intro.html
- (09:02:07 PM) Grindars: не отвлекай меня на японскую хуиту
- (09:02:25 PM) Grindars: так
- (09:02:39 PM) Grindars: колдруби помещает информацию о строках в свой стек, так?
- (09:03:18 PM) whitequark: хм
- (09:03:24 PM) whitequark: да
- (09:03:26 PM) whitequark: sf.line
- (09:03:35 PM) whitequark: это
- (09:03:42 PM) whitequark: у тебя какое исключение, нативное?
- (09:03:51 PM) Grindars: да
- (09:04:08 PM) whitequark: хмм
- (09:04:12 PM) whitequark: а зачем тебе строка тогда?
- (09:04:16 PM) whitequark: оно же строки руби держит\
- (09:04:27 PM) Grindars: смотри
- (09:04:38 PM) Grindars: ReferenceError: $i is not defined
- at Object.<anonymous> (06_kernel.js:103:5)
- at Object.execute (01_ruby.js:1058:27)
- at Object.funcall2 (01_ruby.js:701:17)
- at Object.<anonymous> (<compiled>:34:22)
- at Object.execute (01_ruby.js:984:33)
- at <compiled>:51:8
- (09:04:42 PM) whitequark: хм
- (09:04:48 PM) Grindars: я хочу развернуть стек колдруби и сделать hello.rb:3
- (09:04:52 PM) whitequark: хмммм
- (09:04:54 PM) whitequark: ну давай
- (09:05:03 PM) whitequark: а как ты отмапишь одно к другому?
- (09:05:08 PM) Grindars: вот думаю
- (09:05:11 PM) whitequark: хотя, понятно как
- (09:05:13 PM) whitequark: ща
- (09:05:32 PM) Grindars: я могу фреймы жс получить.
- (09:05:32 PM) Grindars: http://izs.me/v8-docs/classv8_1_1StackFrame.html
- (09:07:11 PM) whitequark: хмм
- (09:07:16 PM) whitequark: фреймы жс...
- (09:07:18 PM) whitequark: а толку?
- (09:07:24 PM) whitequark: фреймы руби к ним не привязаныэ
- (09:07:25 PM) Grindars: есть такая мысль
- (09:07:28 PM) whitequark: смотри, как разворачиваешь.
- (09:07:31 PM) whitequark: ща объясню
- (09:07:39 PM) whitequark: у тебя есть ruby.context.sf
- (09:07:40 PM) Grindars: объясни, может твоя идея лучше, чем гдб
- (09:07:46 PM) whitequark: это односвязный список фреймов
- (09:07:51 PM) Grindars: разве sf - это не только последний фрейм?
- (09:07:51 PM) whitequark: (sf.parent.parent.....)
- (09:08:00 PM) whitequark: разворачивать так
- (09:08:04 PM) Grindars: не вижу инит парента
- (09:08:11 PM) whitequark: он в кишках, не важно
- (09:08:16 PM) whitequark: нативные и скомпиленные фреймы немного отличаются
- (09:08:20 PM) whitequark: я скажу, как
- (09:08:29 PM) whitequark: для обоих можно извлечь информацию о строках
- (09:08:44 PM) whitequark: вот, бегаешь и составляешь список
- (09:08:55 PM) Grindars: у меня будет... список строк руби.
- (09:08:59 PM) whitequark: ага
- (09:09:02 PM) Grindars: мне надо замапить его на строки жс
- (09:09:06 PM) whitequark: хм.
- (09:09:12 PM) Grindars: к ближайшему вверх
- (09:09:39 PM) Grindars: т.е. если строка руби 1 на строке жс 10 и исключение на строке 15, то вывожу hello.rb:1+5
- (09:09:43 PM) Grindars: аки гдб
- (09:10:07 PM) whitequark: ага
- (09:10:23 PM) Grindars: но как мне найти строку, на которой создан фрейм?..
- (09:10:28 PM) Grindars: жсовую
- (09:10:28 PM) whitequark: без понятия
- (09:11:10 PM) whitequark: фреймы отличаются вот чем
- (09:11:18 PM) whitequark: у рубевских typeof sf.iseq == "object"
- (09:11:23 PM) whitequark: у нативных "function"
- (09:11:36 PM) Grindars: и что мне до твоего iseq?
- (09:11:41 PM) whitequark: эм
- (09:11:41 PM) Grindars: мне строки давай же
- (09:11:47 PM) whitequark: а еще в нем есть .line
- (09:11:54 PM) whitequark: в котором находится последняя выполненная рубистрока
- (09:12:49 PM) Grindars: а если я поставлю бряк на доступ к фрейму
- (09:12:56 PM) whitequark: хм
- (09:13:00 PM) whitequark: и что?
- (09:13:06 PM) Grindars: и когда вывалится - вытащу верхний фрейм
- (09:13:08 PM) Grindars: а там жс-строка
- (09:13:14 PM) whitequark: мнээээ
- (09:13:21 PM) whitequark: этих доступов ОЧЕНЬ МНОГО
- (09:13:36 PM) Grindars: тогда...
- (09:13:48 PM) Grindars: инициализировать .js_line = N в кодогенераторе
- (09:13:51 PM) Grindars: лол костыль
- (09:14:02 PM) whitequark: чиво?
- (09:14:11 PM) whitequark: не, че-то я не въеб
- (09:14:20 PM) whitequark: у тебя ж в трейсе есть строка в жс
- (09:14:21 PM) whitequark: не?
- (09:14:24 PM) Grindars: да
- (09:14:26 PM) whitequark: ну вот
- (09:14:29 PM) whitequark: зачем тебе еще одна?
- (09:14:44 PM) Grindars: как я найду ближайшую к искомой строке строку руби?
- (09:14:50 PM) whitequark: эм
- (09:14:56 PM) whitequark: просто посмотри в стековый фрейм.
- (09:15:00 PM) whitequark: там уже лежит ближайшая
- (09:15:04 PM) Grindars: неа
- (09:15:07 PM) whitequark: почему?
- (09:15:07 PM) Grindars: там лежит последняя
- (09:15:33 PM) Grindars: ReferenceError: $i is not defined
- at Object.<anonymous> (06_kernel.js:103:5)
- at Object.execute (01_ruby.js:1058:27)
- at Object.funcall2 (01_ruby.js:701:17)
- at Object.<anonymous> (<compiled>:66:26)
- at Object.execute (01_ruby.js:984:33)
- at Object.funcall2 (01_ruby.js:701:17)
- at Object.<anonymous> (<compiled>:80:22)
- at Object.execute (01_ruby.js:984:33)
- at <compiled>:97:8
- там может быть и больше лулзов
- (09:15:47 PM) whitequark: ну да, последняя
- (09:15:51 PM) whitequark: чем она не ближайшая?
- (09:16:02 PM) Grindars: а я хочу найти строку руби для <compiled>:80:22)
- (09:16:26 PM) whitequark: ну да
- (09:16:28 PM) whitequark: отлично
- (09:16:32 PM) Grindars: и в фрейме не та.
- (09:16:35 PM) whitequark: почему?
- (09:16:41 PM) whitequark: просто выйди на фрейм выше
- (09:16:42 PM) whitequark: там будет та.
- (09:16:49 PM) Grindars: откуда я знаю, какой мне нужен фрейм?
- (09:16:56 PM) whitequark: а ты пропускай не-нативные
- (09:17:02 PM) whitequark: т.е. жсные
- (09:17:05 PM) Grindars: не скомпилированные.
- (09:17:07 PM) Grindars: не <compiled>
- (09:17:08 PM) whitequark: да
- (09:17:20 PM) whitequark: просто каждый <compiled> заменяешь на file:line из фрейма
- (09:17:27 PM) Grindars: а там не может быть лишних лямбд и чего-нибудь еще, способного испортить трейс?
- (09:17:32 PM) whitequark: и идешь к следующему фрейму с typeof iseq == "object"
- (09:17:33 PM) whitequark: хмм
- (09:17:36 PM) whitequark: нет
- (09:17:46 PM) whitequark: в силу того, как оно работает
- (09:17:57 PM) Grindars: число compiled-фреймов всегда == глубине виртуального стека руби?
- (09:18:05 PM) Grindars: (рут не считаем)
- (09:18:20 PM) whitequark: всегда == количеству записей с typeof iseq == "object"
- (09:18:24 PM) whitequark: по определению
- (09:18:27 PM) whitequark: оно так работает.
- (09:18:30 PM) Grindars: крутота
- (09:18:38 PM) Grindars: стек может повредиться?
- (09:18:40 PM) whitequark: нет
- (09:18:50 PM) whitequark: то есть может, но не эта часть
- (09:19:00 PM) whitequark: это, скорее, список фреймов, а не сам стек
- (09:19:02 PM) Grindars: Unwinding ruby stack, please wait a few hours...
- (09:19:05 PM) whitequark: гм.
- (09:19:07 PM) whitequark: почему?
- (09:19:15 PM) Grindars: например, циклическая ссылка, лол
- (09:19:23 PM) Grindars: или просто рельсы
- (09:19:31 PM) Grindars: у которых уровни стека руби измеряются сотнями
- (09:19:32 PM) whitequark: какая еще циклическая ссылка...
- (09:19:35 PM) Grindars: а тут будут тысячи
- (09:19:39 PM) whitequark: почему тысячи?
- (09:19:43 PM) whitequark: будет ровно столько же
- (09:19:47 PM) whitequark: потому что работает так же
- (09:19:52 PM) whitequark: один в один как у мри
- (09:20:00 PM) Grindars: я имею в виду уровни стека JS
- (09:20:04 PM) whitequark: мой стек — это калька
- (09:20:04 PM) whitequark: а
- (09:20:12 PM) whitequark: здесь в три-четыре раза больше.
- (09:20:13 PM) Grindars: у него исключения и так медленные до жути
- (09:20:22 PM) whitequark: да
- (09:20:26 PM) whitequark: я уберу их к ебеням
- (09:20:30 PM) whitequark: т.е. не совсем
- (09:20:33 PM) Grindars: ээ, не надо
- (09:20:37 PM) whitequark: развертывание сделаю не исключениями
- (09:20:37 PM) Grindars: оставь как есть
- (09:20:39 PM) whitequark: а хитрыми return
- (09:20:44 PM) Grindars: исключения не должны быть быстрыми
- (09:20:53 PM) whitequark: они не должны занимать по 0.1 секунды, блядь
- (09:20:59 PM) Grindars: исключение = пиздец, при нормальной работает исключений быть не должно вовсе
- (09:21:00 PM) whitequark: ну, 0.01, если одна штука
- (09:21:08 PM) whitequark: так еб
- (09:21:11 PM) whitequark: не только исключения
- (09:21:16 PM) whitequark: еще иногда break и return
- (09:21:19 PM) whitequark: и ensure тоже
- (09:21:25 PM) Grindars: ты их через исключения сделал?
- (09:21:32 PM) whitequark: не я
- (09:21:34 PM) whitequark: а в руби так
- (09:21:40 PM) Grindars: matz ебанутый
- (09:21:43 PM) whitequark: ensure ладно, без исключений оно не throw-ается
- (09:21:44 PM) whitequark: не
- (09:21:44 PM) Grindars: бобер-извращенец
- (09:21:48 PM) Grindars: у него исключения ГМ
- (09:21:48 PM) whitequark: не все break и return
- (09:21:52 PM) whitequark: а только из вложенных лямбд
- (09:21:55 PM) whitequark: потому что иначе никак
- (09:22:08 PM) whitequark: но некоторые да, сделаны так.
- (09:22:16 PM) whitequark: обычные нет, просто байткодом
- (09:22:33 PM) Grindars: статический режим отделился.
- (09:22:41 PM) whitequark: хм?
- (09:22:49 PM) whitequark: ктоа?
- (09:22:54 PM) Grindars: -s
- (09:23:01 PM) whitequark: в каком плане отделился?
- (09:23:18 PM) Grindars: ColdRubyVM научился вызывать RubyCompiler, когда ему надо
- (09:23:22 PM) whitequark: аа
- (09:23:25 PM) whitequark: гуд
- (09:23:55 PM) whitequark: я еще compile.rb в lib/coldruby перекинул
- (09:24:01 PM) whitequark: потому что он больше не +x
- (09:24:18 PM) Grindars: ColdRuby *createRuby();
- bool runRuby(ColdRuby *ruby, const std::string &code, const std::string &file);
- что лучше: так или ruby->run(code, file)? code - код руби, плюс хелпер run(file)
- (09:24:25 PM) whitequark: хмм
- (09:24:46 PM) whitequark: не понял вопроса
- (09:24:46 PM) Grindars: если перемещу в ColdRuby - все равно будет обертка над VM
- (09:24:58 PM) whitequark: я бы сделал в колдрубе, наверное
- (09:25:19 PM) Grindars: тогда им придется стать друзьями
- (09:25:52 PM) whitequark: ой
- (09:25:54 PM) whitequark: это плохо
- (09:25:57 PM) whitequark: делай без друзей.
- (09:25:58 PM) Grindars: слушай
- (09:26:13 PM) Grindars: у compile.rb все еще есть аргумент топлевел?
- (09:27:40 PM) whitequark: да
- (09:27:42 PM) whitequark: а что?
- (09:27:49 PM) Grindars: а он шо делает?
- (09:28:00 PM) whitequark: хм
- (09:28:02 PM) whitequark: ничего?
- (09:28:11 PM) Grindars: тогда хули он еще есть?
- (09:28:18 PM) whitequark: это
- (09:28:21 PM) whitequark: а ты is_file юзаешь?
- (09:28:23 PM) Grindars: нет
- (09:29:04 PM) Grindars: компилятор - придаток coldruby, он ничего интеллектуальнее кодогенерации не делает
- (09:29:08 PM) whitequark: тогда уберу это к ебеням
- (09:29:09 PM) whitequark: будет так
- (09:29:10 PM) whitequark: def compile(what)
- ruby_iseq = RubyVM::InstructionSequence.compile *what, CompilerOptions
- (09:29:15 PM) Grindars: нене
- (09:29:17 PM) Grindars: убери splat
- (09:29:19 PM) Grindars: разверни
- (09:29:21 PM) whitequark: хм
- (09:29:24 PM) Grindars: мне удобнее не-массивом
- (09:29:26 PM) whitequark: а какие там аргументы-то?
- (09:29:34 PM) whitequark: file, path, line?
- (09:29:43 PM) Grindars: причем path всегда nil
- (09:30:01 PM) whitequark: def compile(code, file, line)
- ruby_iseq = RubyVM::InstructionSequence.compile code, file, nil, line, CompilerOptions
- (09:30:04 PM) Grindars: да
- (09:30:12 PM) whitequark: дебажный ключ сделай
- (09:30:17 PM) Grindars: который что?
- (09:30:24 PM) whitequark: ColdRuby.debug = true
- (09:30:35 PM) whitequark: будет срать на STDERR.
- (09:30:39 PM) Grindars: -d, --debug Debug code generation
- (09:30:44 PM) whitequark: ага
- (09:30:54 PM) Grindars: конкретно ща я выпиливаю toplevel
- (09:30:59 PM) Grindars: блядь, то впилить, то выпилить...
- (09:31:20 PM) whitequark: да еб
- (09:31:45 PM) whitequark: это
- (09:31:48 PM) whitequark: оно сегодня заведется?
- (09:31:48 PM) Grindars: по-моему, натив поглощает колдруби.
- (09:31:53 PM) whitequark: натив...
- (09:31:58 PM) whitequark: не, сам компиль останется
- (09:31:59 PM) whitequark: а это главное
- (09:32:01 PM) Grindars: надо рефакторинг
- (09:32:09 PM) whitequark: блин
- (09:32:14 PM) whitequark: хочу запилить yield няшно
- (09:34:30 PM) whitequark: кофий...
- (09:43:53 PM) whitequark: хм.
- (09:44:01 PM) Grindars: almost
- (09:44:24 PM) Grindars: [grindars 2c031e5] Initial V8 support.
- 15 files changed, 501 insertions(+), 54 deletions(-)
- (09:44:31 PM) whitequark: ни хуя себе
- (09:44:34 PM) Grindars: учти, при работе оно делает проверку на удачу
- (09:44:38 PM) whitequark: э, что?
- (09:44:54 PM) Grindars: если ты недостаточно удачлив - не заработает.
- (09:44:58 PM) Grindars: разворота стека нет
- (09:44:59 PM) whitequark: э, что?
- (09:45:00 PM) Grindars: $i нет
- (09:45:02 PM) whitequark: хм.
- (09:45:05 PM) whitequark: $i нет...
- (09:45:08 PM) Grindars: потенциально креши
- (09:45:18 PM) Grindars: $i впили времянкой из старого
- (09:45:21 PM) whitequark: ага
- (09:45:31 PM) Grindars: документации нового кода нет
- (09:45:39 PM) whitequark: пофиг на доки
- (09:45:43 PM) whitequark: я в MRI разобрался
- (09:45:46 PM) whitequark: мне никакой код не страшен
- (09:46:07 PM) Grindars: посмотри... adventure
- (09:46:17 PM) whitequark: adventure?
- (09:46:22 PM) Grindars: over 9000 numeric goto
- (09:46:27 PM) whitequark: ой бля
- (09:46:32 PM) whitequark: в MRI нету гото.
- (09:46:41 PM) Grindars: в моем коде обычно есть гото
- (09:46:50 PM) whitequark: вместо try...finally?
- (09:46:52 PM) Grindars: да
- (09:46:58 PM) Grindars: здесь я не заморачиваюсь экономией байт и делаю нормально
- (09:47:03 PM) whitequark: ага
- (09:47:08 PM) Grindars: кстати
- (09:47:15 PM) Grindars: я помню, ты троллил в какой-то рассылке
- (09:47:30 PM) Grindars: что руби не нужен .pyc, потому что они и так быстро парсит
- (09:47:34 PM) Grindars: нихуя он не быстро парсит.
- (09:47:40 PM) whitequark: не, ты не понял
- (09:47:45 PM) whitequark: питон ЕЩЕ МЕДЛЕННЕЕ
- (09:47:47 PM) whitequark: на порядок
- (09:47:51 PM) whitequark: или даже больше
- (09:47:58 PM) Grindars: или быстро по сравнению с тормозами MRI потом?)
- (09:48:12 PM) Grindars: мне нравится, как собирается coldrub
- (09:48:13 PM) Grindars: *coldruby
- (09:48:15 PM) Grindars: быстро
- (09:48:15 PM) whitequark: хм
- (09:48:17 PM) Grindars: фап-фап-фап
- (09:48:20 PM) whitequark: ))
- (09:48:56 PM) whitequark: реализация руби с самой быстрой сборкой?))
- (09:48:58 PM) Grindars: ты скомпиль его ща, пока я десктоп не вырубил
- (09:49:00 PM) whitequark: ща
- (09:49:19 PM) Grindars: time coldruby/coldruby -s/dev/null -B hello.rb
- real 0m0.013s
- (09:49:26 PM) whitequark: хм
- (09:49:33 PM) Grindars: coldruby: everything is fast. including build.
- (09:49:37 PM) whitequark: -s/dev/null?
- (09:49:47 PM) Grindars: а что?
- (09:49:52 PM) whitequark: это что?
- (09:50:01 PM) Grindars: -s можно аргумент передать
- (09:50:05 PM) Grindars: файл, куда писать
- (09:50:12 PM) whitequark: а.
- (09:50:22 PM) Grindars: по стандарту гетопта параметры коротких опций пробелом не отделяются, если аргумент опционален
- (09:50:33 PM) Grindars: это самый пиздец
- (09:50:37 PM) whitequark: $ ./coldruby/coldruby hello.rb
- coldruby: 01_ruby.js:990: ReferenceError: $i is not defined
- } else throw e; // dooooown to the basement
- ~~~~~~~~~~~~~~~~~^
- Stack trace:
- ReferenceError: $i is not defined
- at Object.<anonymous> (06_kernel.js:93:31)
- at Object.execute (01_ruby.js:1058:27)
- at Object.funcall2 (01_ruby.js:701:17)
- at Object.<anonymous> (<compiled>:34:22)
- at Object.execute (01_ruby.js:984:33)
- at <compiled>:51:8
- (09:50:39 PM) whitequark: вин
- (09:50:46 PM) Grindars: нравится стрелочка?
- (09:50:49 PM) whitequark: ага
- (09:50:50 PM) whitequark: няшно
- (09:50:56 PM) whitequark: как этот
- (09:50:58 PM) Grindars: в кланге так ошибки
- (09:51:00 PM) whitequark: в нетхаке
- (09:51:02 PM) Grindars: только еще цветные
- (09:51:08 PM) whitequark: о, цветные
- (09:51:10 PM) whitequark: надо впилить )
- (09:51:16 PM) Grindars: термиос нужен
- (09:51:22 PM) whitequark: ffuuuuu~~
- (09:51:28 PM) whitequark: ой
- (09:51:35 PM) whitequark: я вспомнил, откуда пошло это ffuuuu~~
- (09:51:37 PM) Grindars: ты его крешнул?
- (09:51:37 PM) whitequark: ffuuuuuuu~~
- (09:51:41 PM) Grindars: а я помню
- (09:51:46 PM) whitequark: я теперь тоже.
- (09:51:49 PM) whitequark: ffuuuuuu~~
- (09:51:52 PM) whitequark: не, не так
- (09:51:53 PM) whitequark: буэээээ.
- (09:51:57 PM) Grindars: да
- (09:51:59 PM) Grindars: православно
- (09:52:11 PM) whitequark: хотя если представить
- (09:52:13 PM) whitequark: тоже малоприятно
- (09:52:23 PM) whitequark: вроде запустил
- (09:52:26 PM) whitequark: ща впилю $i
- (09:52:36 PM) Grindars: хелловорлд хелловолдит
- (09:52:38 PM) Grindars: ?
- (09:52:43 PM) whitequark: мнэ
- (09:52:44 PM) whitequark: падает
- (09:52:46 PM) whitequark: без $i
- (09:52:51 PM) Grindars: ах да, exit не стоит делать как exit, он стек не разворачивает
- (09:53:04 PM) Grindars: т.е. плохо очистит
- (09:53:28 PM) whitequark: так
- (09:53:31 PM) whitequark: куда впиливать?
- (09:53:33 PM) whitequark: в какой класс?
- (09:53:37 PM) Grindars: в рубивм
- (09:53:42 PM) Grindars: колдрубивм
- (09:54:23 PM) Grindars: static bool v8::V8::Dispose ( ) [static]
- Releases any resources used by v8 and stops any utility threads that may be running.
- Note that disposing v8 is permanent, it cannot be reinitialized.
- (09:54:40 PM) Grindars: после ембеддеда слово "permanent" меня пугает
- (09:54:49 PM) whitequark: хехе
- (09:54:55 PM) Grindars:
- static bool v8::V8::IsDead ( ) [static]
- Check if V8 is dead and therefore unusable.
- This is the case after fatal errors such as out-of-memory situations.
- (09:55:05 PM) whitequark: лол
- (09:55:21 PM) Grindars: жалко, что нет RaiseUndead()
- (09:55:41 PM) whitequark: есть, дрочи внутренние структуры
- (09:55:45 PM) whitequark: это будет колдунство
- (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.
- (09:56:26 PM) Grindars: у V8 кооперативная многозадачность
- (09:56:28 PM) Grindars: нативно
- (09:56:32 PM) whitequark: хм
- (09:56:35 PM) whitequark: мне нужны фиберы.
- (09:56:43 PM) Grindars: это блядь они и есть
- (09:56:48 PM) whitequark: ага
- (09:57:42 PM) Grindars has signed off.
- (10:03:07 PM) Grindars has signed on.
- (10:04:04 PM) Grindars: а если сделать расширение 'coldruby' со всяким разным, например, состоянием кучи в8, это будет руби-вей?
- (10:04:08 PM) whitequark: хм
- (10:04:10 PM) whitequark: вполне
- (10:04:22 PM) whitequark: $ ./coldruby/coldruby hello.rb
- #
- # Fatal error in v8::HandleScope::CreateHandle()
- # Cannot create a handle without a HandleScope
- #
- Aborted
- (10:04:23 PM) whitequark: хмм
- (10:04:42 PM) Grindars: показывай код
- (10:04:47 PM) whitequark: уже понял
- (10:05:00 PM) whitequark: $ ./coldruby/coldruby hello.rb
- Hello world
- $ cat hello.rb
- puts "Hello world"
- (10:05:02 PM) whitequark: няяяя!!!
- (10:05:09 PM) Grindars: да, неплохо.
- (10:05:18 PM) whitequark: НЯЯЯ!!!
- (10:05:24 PM) whitequark: ^___^
- (10:05:31 PM) whitequark: кавайка.
- (10:05:33 PM) ***Grindars pokerfac
- (10:05:36 PM) Grindars: *pokerface
- (10:05:39 PM) whitequark: хех.
- (10:06:15 PM) Grindars: rxr.w.o не копается
- (10:06:43 PM) whitequark: а у меня пашет
- (10:06:53 PM) whitequark: хм
- (10:06:55 PM) whitequark: и не копается
- (10:06:56 PM) whitequark: втф.
- (10:07:28 PM) Grindars: зону проверь
- (10:07:30 PM) whitequark: w.o упал
- (10:07:33 PM) whitequark: а не
- (10:07:50 PM) whitequark: ага
- (10:07:52 PM) whitequark: днска упала
- (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
- (10:08:00 PM) whitequark: блядь
- (10:08:07 PM) Grindars: reboot.
- (10:08:10 PM) whitequark: нет
- (10:08:23 PM) whitequark: нууу
- (10:08:24 PM) whitequark: или да...
- (10:08:26 PM) Grindars: у тебя зоны в sql?
- (10:08:27 PM) whitequark: что за хуйня?
- (10:08:27 PM) whitequark: да
- (10:08:31 PM) Grindars: хули они там делают?
- (10:08:48 PM) whitequark: лежат, бля
- (10:09:09 PM) whitequark: Ща откачу пакет
- (10:10:18 PM) whitequark: ага, откатил
- (10:10:19 PM) whitequark: все ок
- (10:10:52 PM) Grindars: rxr.whitequark.org. 3364 IN CNAME 501legion.org.
- 501legion.org. 86400 IN A 95.31.17.119
- ;; AUTHORITY SECTION:
- 501legion.org. 86163 IN NS ns2.ipv6.rollernet.us.
- 501legion.org. 86163 IN NS ns1.ipv6.rollernet.us.
- 501legion.org. 86163 IN NS ns0.whitequark.org.
- (10:10:57 PM) whitequark: да
- (10:11:04 PM) whitequark: он не на моем серве
- (10:11:05 PM) Grindars: это странно
- (10:11:09 PM) whitequark: на серве знакомого, я его админю
- (10:11:21 PM) whitequark: мой бы всю ночь индекс перелопачивал
- (10:11:55 PM) Grindars: а грин.орг?
- (10:12:06 PM) whitequark: мнээээ
- (10:12:09 PM) whitequark: я ночью ставил
- (10:12:13 PM) whitequark: а там надо было пару пакетов.
- (10:12:46 PM) whitequark: бля, все равно спать хочу
- (10:12:49 PM) whitequark: снотворного чтоль дали
- (10:12:57 PM) whitequark: тогда оно хуево работает, потому что не особо хочу
- (10:13:05 PM) whitequark: так
- (10:13:13 PM) whitequark: надо будет впилить красивый показ эксепшнов руби
- (10:13:27 PM) Grindars: всм?
- (10:13:32 PM) whitequark: $ ./coldruby/coldruby hello.rb
- coldruby: 01_ruby.js:1046: [object Object]
- throw e;
- ~~~~~~~~~~~~^
- (10:13:36 PM) whitequark: а надо мессагу и трейс.
- (10:13:44 PM) Grindars: расскажи, как
- (10:13:47 PM) whitequark: нууу
- (10:14:35 PM) Grindars: кто писал онигуруму?
- (10:14:40 PM) whitequark: японцы
- (10:14:42 PM) whitequark: а что?
- (10:14:50 PM) whitequark: она винрарна
- (10:14:57 PM) Grindars: ебический пиздец, док опять нет
- (10:15:01 PM) whitequark: почему?
- (10:15:02 PM) whitequark: есть
- (10:15:20 PM) Grindars: а, точно
- (10:16:13 PM) Grindars: Create a regex object.
- This function is deluxe version of onig_new().
- (10:16:18 PM) Grindars: што?
- (10:16:21 PM) whitequark: гы
- (10:16:35 PM) whitequark: хз
- (10:17:13 PM) Grindars: если я сделаю жс-класс OnigurumaRegex, заюзаешь?
- (10:17:25 PM) whitequark: хмм
- (10:17:30 PM) whitequark: надо думать над АПИ.
- (10:17:38 PM) Grindars: я просто оберну апи
- (10:17:39 PM) Grindars: в жс
- (10:17:41 PM) whitequark: хммм.
- (10:17:44 PM) Grindars: 1:1
- (10:17:46 PM) whitequark: хмммм.
- (10:17:54 PM) whitequark: наверное, это правильно.
- (10:18:48 PM) whitequark: if(ex.op == 'raise') {
- print(ruby.funcall(ex.object.klass, 'to_s') + ": " + ruby.funcall(ex.object, 'to_s') + "\n"));
- var trace = ruby.check_convert_type(ruby.funcall(ex.object, 'backtrace'), ruby.c.Array, 'to_a');
- for(var i = 0; i < trace.length; i++)
- print("\tfrom " + ruby.check_convert_type(trace[i], ruby.c.String, 'to_s'));
- }
- (10:18:51 PM) whitequark: вот так хендлить
- (10:19:10 PM) Grindars: в нативе?
- (10:19:13 PM) whitequark: ага
- (10:20:02 PM) Grindars: если исключение колдрубишное, то у него будет свойство klass?
- (10:20:05 PM) whitequark: да
- (10:20:07 PM) whitequark: то есть не
- (10:20:08 PM) whitequark: смотри
- (10:20:17 PM) whitequark: колдрубе делает разные виды throw
- (10:20:24 PM) whitequark: но во всех есть одна вещь
- (10:20:29 PM) whitequark: { op: TYPE }
- (10:20:30 PM) whitequark: строка
- (10:20:36 PM) whitequark: если raise, то это ексепшн
- (10:20:41 PM) whitequark: остальные не должны вылетать в натив никогда
- (10:21:03 PM) Grindars: иначе "ColdRuby Runtime bug"
- (10:21:19 PM) whitequark: ага
- (10:21:27 PM) whitequark: и покажи op, тогда уж
- (10:21:41 PM) Grindars: я дампану объектца, может?
- (10:22:02 PM) whitequark: хм
- (10:22:02 PM) whitequark: ага
- (10:22:47 PM) Grindars: http://blogs.msdn.com/b/oldnewthing/archive/2011/04/25/10157540.aspx
- (10:25:23 PM) whitequark: гыг
- (10:26:10 PM) whitequark: $ ./coldruby/coldruby hello.rb
- LocalJumpError: no block given (yield)
- from hello.rb:2: in `block in a'
- from <runtime:05_proc.js>:31: in `call'
- from hello.rb:2: in `a'
- from hello.rb:5: in `<compiled>'
- (10:26:11 PM) whitequark: ура.
- (10:26:23 PM) whitequark: сделал костыль отображения
- (10:26:28 PM) whitequark: show_error: function(exception) {
- $i.print(this.funcall(exception.klass, 'to_s') + ": " +
- this.funcall(exception, 'to_s') + "\n");
- var trace = this.funcall(exception, 'backtrace');
- trace = this.check_convert_type(trace, this.c.Array, 'to_a');
- for(var i = 0; i < trace.length; i++)
- $i.print("\tfrom " + this.check_convert_type(trace[i], this.c.String, 'to_s') + "\n");
- },
- (10:26:31 PM) whitequark: вот рабочий код
- (10:26:38 PM) Grindars: перейдет в натив?
- (10:26:41 PM) whitequark: да
- (10:26:43 PM) whitequark: надо в нативе
- (10:30:46 PM) whitequark: а ты чтоль что-то делаешь с рантаймом?
- (10:30:54 PM) whitequark: кешируешь?
- (10:31:08 PM) Grindars: неа
- (10:31:17 PM) Grindars: не трогаю пока
- (10:31:22 PM) whitequark: хмм
- (10:36:02 PM) whitequark: ладно, у меня что-то затык
- (10:36:08 PM) whitequark: а браузер ты еще не впилил
- (10:36:36 PM) whitequark: а, хотя
- (10:36:38 PM) whitequark: руками норм.
- (10:36:45 PM) Grindars: кого? браузер?
- (10:36:54 PM) Grindars: тебе мало в8, еще вебкит надо?!
- (10:36:54 PM) whitequark: поддержку его
- (10:37:05 PM) whitequark: все уже
- (10:37:07 PM) whitequark: три строки
- (10:38:48 PM) whitequark: хмм
- (10:38:50 PM) whitequark: что-то я туплю
- (10:38:56 PM) whitequark: ладно, завтра.
- (10:39:04 PM) Grindars: спи
- (10:39:08 PM) whitequark: угу
- (10:39:17 PM) Grindars: я через 20 минут пойду
- (10:39:24 PM) Grindars: потом встану в 7 и буду рефакторить
- (10:57:46 PM) Grindars has signed off.
- (09:32:11 AM) Grindars has signed on.
- (09:32:21 AM) whitequark: так
- (09:32:23 AM) whitequark: я тут
- (09:32:30 AM) whitequark: ночью пофиксил багов
- (09:32:37 AM) Grindars: я вытянул
- (09:32:39 AM) whitequark: на тестах literal фейлилось 49
- (09:32:39 AM) Grindars: привет, кстати
- (09:32:42 AM) whitequark: теперь 28
- (09:32:43 AM) whitequark: привет, ага
- (09:32:48 AM) Grindars: я сейчас делаю unwinding
- (09:32:58 AM) Grindars: все сложнее, чем кажется, хехе
- (09:33:06 AM) whitequark: кстати, с твоим колдрубе тестраннер работает быстрее
- (09:33:10 AM) Grindars: из исключения нельзя взять и получить нативный трейс
- (09:33:14 AM) whitequark: можно даже не делать ремоте компилер
- (09:33:38 AM) whitequark: думаю, все дело было в геме json
- (09:33:40 AM) whitequark: он тормозил.
- (09:34:16 AM) Grindars: надо делать Local<Value> Debug::Call(unwinding_function), жс-функция вызовется на контексте дебаггера с параметром exec_state, где будет стек, а его можно ковырять уже
- (09:34:30 AM) Grindars: сформировать массив нормальный и вернуть, а дальше unwinding делать
- (09:36:18 AM) Grindars: будет немного медленно (десятки-сотни мс), но часто ли возникают непойманные исключения?)
- (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.
- (09:37:12 AM) whitequark: что за хуйня
- (09:37:14 AM) whitequark: 49154?!!
- (09:37:35 AM) whitequark: 1100000000000010
- (09:37:37 AM) whitequark: хм.
- (09:38:26 AM) Grindars: Returns a mirror object for the given object.
- (09:38:38 AM) Grindars: кого?
- (09:44:38 AM) Grindars: trying to unwind Ruby stack
- unwinding helper is empty, entering debug context
- i'm in ur debug context, evaluating ur scripts
- оно не скрешилось!11
- (09:45:34 AM) Grindars: слух
- (09:45:56 AM) Grindars: куда мне вспомогательный скрипт дебаггера деть?
- (09:47:13 AM) whitequark: хмм
- (09:47:16 AM) whitequark: всм?
- (09:47:23 AM) whitequark: жску?
- (09:47:50 AM) Grindars: да
- (09:47:51 AM) Grindars: жска
- (09:47:57 AM) Grindars: но она в другом контексте работает
- (09:47:59 AM) whitequark: хм
- (09:48:08 AM) whitequark: а хуй знает
- (10:08:07 AM) Grindars: блин
- (10:08:10 AM) Grindars: почему-то стек пустой
- (10:08:12 AM) Grindars: нет фреймов
- (10:15:36 AM) Grindars: пинг
- (10:16:55 AM) whitequark: понг
- (10:17:01 AM) Grindars: все, я понял
- (10:17:10 AM) Grindars: или я долбоеб, или v8 нелогичен
- (10:17:40 AM) Grindars: v8::TryCatch:
- 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.
- v8::Message:
- Handle< StackTrace > GetStackTrace () const
- Exception stack trace.
- (10:21:03 AM) Grindars: static void SetCaptureStackTraceForUncaughtExceptions (bool capture, int frame_limit=10, StackTrace::StackTraceOptions options=StackTrace::kOverview)
- прям винапи какое-то
- (10:21:11 AM) whitequark: еб
- (10:23:07 AM) Grindars: нет, не оно, это ж пойманное исключение
- (10:23:14 AM) Grindars: а стек пуст. как странно
- (10:23:24 AM) Grindars: вернее, не пуст, его нет
- (10:26:24 AM) Grindars: блядь.
- (10:26:30 AM) Grindars: стек не валиден в try/catch
- (10:26:42 AM) Grindars: придется парсить строку.
- (10:26:56 AM) whitequark: я пушнул...
- (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.
- vector<string> tokens;
- copy(istream_iterator<string>(iss),
- istream_iterator<string>(),
- back_inserter<vector<string> >(tokens));
- (10:29:37 AM) Grindars: они там пизданулись чтоль
- (10:29:57 AM) Grindars: it's TOO GENERIC
- (10:38:52 AM) whitequark: а, еще такая хуйня
- (10:38:55 AM) whitequark: мм
- (10:38:55 AM) whitequark: ща
- (10:39:16 AM) Grindars: как же тяжело писать на STL
- (10:39:38 AM) Grindars: std::istringstream trace_stream(trace);
- while(!trace_stream.eof()) {
- std::string line;
- std::getline(trace_stream, line);
- ...
- }
- (10:39:59 AM) whitequark: во, смотри
- (10:40:07 AM) whitequark: если я, скажем, захочу колдрубе в nodejs
- (10:40:12 AM) whitequark: то мне потребуется онигурума там
- (10:40:21 AM) whitequark: вот как бы это так захуячить.
- (10:40:29 AM) Grindars: у V8 есть расширения.
- (10:40:37 AM) whitequark: а, свой механизм?
- (10:40:44 AM) whitequark: тогда его и надо юзать
- (10:41:09 AM) Grindars: ээ
- (10:41:17 AM) Grindars: там в doxygen
- (10:41:29 AM) whitequark: хм?
- (10:41:29 AM) Grindars: v8::Extension Class Reference
- Ignore.
- (10:41:37 AM) whitequark: не въеб
- (10:41:38 AM) Grindars: ясно, так и сделаю
- (10:41:58 AM) Grindars: может, хуево сделаны, не работают либо устарели
- (10:42:03 AM) whitequark: еще запили команду
- (10:42:06 AM) whitequark: "дай рантайм"
- (10:42:17 AM) Grindars: да погоди ты, дай сраные исключения распарсить
- (10:46:51 AM) whitequark: и еще require надо из nodejs...
- (10:46:57 AM) whitequark: надо будет придумать, как.
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement