From mboxrd@z Thu Jan 1 00:00:00 1970 MIME-Version: 1.0 Date: Sun, 10 Apr 2011 20:53:18 +0300 Message-ID: From: Sergey Kish To: 9fans@9fans.net Content-Type: text/plain; charset=ISO-8859-1 Subject: [9fans] /dev/draw and c, rc, ruby, python, go Topicbox-Message-UUID: ceab8e36-ead6-11e9-9d60-3106f5b1d025 Ruby is my language of choice. It was natural to use it for Plan 9 application development which involves working with dictiories, stacks and some metaprogramming. I took fgb/ruby, localized changes, wrote mkfile https://gist.github.com/912507 And it was ok until I've started GUI part. It appears that Ruby C extensions are dynamic libraries. So I can't access libdraw, but why not access /dev/draw directly? libdraw is a simple wrapper around /dev/draw. It can be implemented in any language. Unexpected problem appeard rapidly. I can't reread /dev/draw/ctl named-image.rb:26:in `read': Invalid argument - /dev/draw/new (Errno::EINVAL) from named-image.rb:26 To check algorithm named imaged retrieval on several languages was written . All attempts storred on github https://gist.github.com/912377 C looks clear and works fine. Python and Ruby falls with exception. Their message construction checked in rc, which works fine. Also works when opened from rc and accessed in application through /fd/4 <[4] /dev/draw/new { ruby application.rb } Today I've implemented same on go. It also falls but it may be my fault error: read /dev/draw/new: unknown id for draw image What's special about Plan 9 files? Which languages handle them? How to fix Python and Ruby? Any help appreciated