Deleted articles cannot be recovered. Draft of this article would be also deleted. Are you sure you want to delete this article?
[mercari GEARS 2025] Building Foundation for Mercariâs Global Expansion
mruby/cã®å®å®ç1.0ãªãªã¼ã¹ã«å ç«ã¡ãRubyããã³mrubyã®éçºè ã§ãITOCã®é¡§åã§ãããã¾ã¤ãã¨ããã²ãããã«ãmruby/cããã¸ã§ã¯ãã¸ã®æå¾ ãä»å¾ã®æ¹åæ§ãªã©ã«ã¤ãã¦æ±å°éç ç©¶å¡ã¨ã¨ãã«ã話ããã ãã¾ããã ï¼ã¤ã³ã¿ãã¥ã¼æ¥ï¼2016å¹´12æ12æ¥ï¼ âãæ¬æ¥ã¯ãããããé¡ããããã¾ãã ITOCã§ã¯mruby/cã SciRubyãªã©Rubyã«é¢é£ããç ç©¶éçºã«åãçµãã§ãã¾ããRubyãå©ç¨ããããã¨ã®å¤ãçå 伿¥ã®çããããã¯RubyãITOCã®ç ç©¶éçºã«å¤ãã®æå¾ ãå¯ãããã¦ãã¾ãã ã¾ã¤ãã¨ããã¯å½å å¤ã§å¤æ°è¬æ¼ãããå¤ãã®æ¹ã¨ã話ãããæ©ä¼ããæã¡ã ã¨æãã¾ãããå½å å¤ã§ã®Rubyãmrubyã®æ¡ããã«ã¤ãã¦ã©ã®ããã«æãã¦ããã£ãããã¾ããï¼ ã¾ã¤ãã¨ï¼Rubyã¯ããã§ã«å¤ãã®ã¦ã¼ã¶ã¼ã«å©ç¨ããã¦ããã仿´ãæ°ãã«æ¡ãããæããã¬ãã«ã§ã¯ãªãã§ããã m
200ä¸ä»¥ä¸ã®Webãµã¤ããæ¯ããã¤ã³ãã©ã§ããªã½ã¼ã¹å¶å¾¡ã¨ãã¦ä½¿ããã¦ãã mod_mruby ã®æ¡ç¨äºä¾ãç´¹ä»ãã¾ãã
ãªãã¨ãªããmrubyã®VMã®åºæ¬çãªã¨ãããæ¸ãã¦ãããã¨æã£ãã®ã§ã誰ãã®åèã«ãªãã°ã 大ããªä»æ§çãªã¨ããã¯ã ã»32bitåºå®é·ã®ãã¤ãã³ã¼ããè§£éãã¦åä½ããã ã»ã¬ã¸ã¹ã¿ãã¹ã¿ãã¯ã«ç¢ºä¿ããã¿ã¤ãã®ã¬ã¸ã¹ã¿ãã·ã³ã§ãããå¾ã£ã¦ãã¹ã¿ãã¯ã®ä»»æã®ä½ç½®ãã¬ã¸ã¹ã¿çªå·ã§æå®ãã¦ç´æ¥èªã¿æ¸ãå¯è½ã ã»ã¡ã½ããããããã¯ãªã©ã®åä½ã§ãã¤ãã³ã¼ããirepæ§é ä½ã«ã¾ã¨ãããã¦ããã ã¿ãããªæãã ã¹ã¿ãã¯ã®ä½¿ãæ¹ ã¹ã¿ãã¯ããããã¬ã¸ã¹ã¿ã®R0ã¨ãªãã以ä¸ãR1ãR2・・・ã¨ååãä»ãããããã¹ã¿ãã¯ã®åã¯mrb_valueã®é åã§ãããã¤ã¾ãmrubyãªãã¸ã§ã¯ããè©°ã¾ã£ã¦ãããirepã®ã³ã¼ããå¼ã³åºãã¨ããã¹ã¿ãã¯ã®ä¸ããé ã«ä»¥ä¸ã®ãããªæ å ±ãç©ãã§ããå¼ã°ããã (弿°ã2åãã£ãå ´åã®ä¾) R0 |self | R1 |argument1| R2 |argument2| R3
æè¿mrubyã«ã³ããããã¦ããã®ã§èªåã®æ´»åãã¾ã¨ãã¾ãã mrubyãå°ãããã話 mrubyã§ã¯ãæååã®æ±ãã¯ã·ã³ãã«ã«char*ãæ§é ä½ã§ã©ãããã¦ãã¾ããã struct RString { MRB_OBJECT_HEADER; mrb_int len; union { mrb_int capa; struct mrb_shared_string *shared; } aux; char *ptr; }; ãã®ãã1ã¤ã®æå忝ã«ãæ§é ä½åã¨æåååã®2åã®malloc/freeãçºçãã¦ãã¾ããã ããã§CRubyã®RStringãè¦ã¦ã¿ã¾ãã #define RSTRING_EMBED_LEN_MAX ((int)((sizeof(VALUE)*3)/sizeof(char)-1)) struct RString { struct RBasic basic; union {
人éã¨ã¦ã§ãã®æªæ¥ï¼æ§ï¼ ãã¦ã§ãã®æ´å²ã¯äººé¡ã®æ´å²ã®ç¹°ãè¿ããã¨ãã観ç¹ããè²ã åå¼·ãã¦ãã¾ãã2014å¹´ã¾ã§ã®äººéã¨ã¦ã§ãã®æªæ¥ã®æ§ããã°ã§ãã å¹´æ«ã«SPDYãHTTP2ã®åå¼·ãã¦ããmrubyã§SPDYãHTTP2éä¿¡å¯è½ãªmrbgemãä½ãã¾ããã mruby-spdy mruby-http2 ããã§ãmrubyãçµã¿è¾¼ãã ã¢ããªã±ã¼ã·ã§ã³ãããã¤ã¹ããSPDYã»HTTP2éä¿¡ãã§ããããã«ãªã£ã¦æªæ¥ãåºããã¾ããã ç¾ç¶ã¯ã¯ã©ã¤ã¢ã³ãã®GETã®ã¿ãã§ãã¾ããããã§ãä¾ãã°mod_mrubyãngx_mrubyã«çµã¿è¾¼ãã§ãããURLã«ã¢ã¯ã»ã¹ããå ´åã¯ããã¯ã¨ã³ãã§SPDYãHTTP2ãªéä¿¡ããããã¨ãã§ãã¾ããã ãµã³ãã« SPDYãHTTP2éä¿¡ãããããã«ã¯Rubyã§ä»¥ä¸ã®ããã«æ¸ãã¾ãã SPDYéä¿¡ [program lang=ârubyâ escaped=âtrue
ã¨ã³ã¿ã¼ãã©ã¤ãºã¨ã³ã³ã·ã¥ã¼ããé転ããããã¹ãPCã®æä»£ ä¼è¤ãåã¯ãã¾BtoBã®éçºã®ã³ã³ãµã«ããããã¨ããã£ã¦ãããã§ä½ãæå¾ ããã¦ãããã¨ããã¨ãBtoCã§æåãã¦ããæ¹æ³è«ãéçºããã»ã¹ãªã©ãBtoBã§ãããããã¨ã 以åã¯ãµã¼ãOSããã¼ã¿ãã¼ã¹ãªã©ã®é¢ã§å é²çãªæè¡ã使ããã¦ããBtoBãã¨ã³ã¿ã¼ãã©ã¤ãºç³»ã®éçºã¯ããã¾ãå 鲿§ã§ã¯ã¯ã©ã¦ããã¢ãã¤ã«ããã¤ã¹ã使ã£ãã³ã³ã·ã¥ã¼ãã«é転ããã¦ãã¾ã£ã¦ãã¾ãã ã¾ã¤ãã¨ãæè¿ãã¹ãã¼ããã©ã³ã¨ãã¿ãã¬ããã¨ããPCãããªãã¨ããã主æ¦å ´ã«ãªã£ã¦ãã¦ãPCããå°ããªããã¤ã¹ãå°ãåãªããçµã¿è¾¼ã¿ãã¨è¨ããã¦ãããã®ã®éè¦æ§ãé«ã¾ã£ã¦ããã®ã§ã¯ãªãããªã¨æã£ã¦ãã¾ãããã¾ããããªããã¤ã¹ã¯ã¹ãã¼ããã©ã³ã ã£ãããã¾ããããã£ã¨å ã«é²ãã¨ã³ã³ãã¥ã¼ã¿ã¯ç°å¢ã«çµã¿è¾¼ã¾ãã¦ã©ãã©ãè¦ããªããªã£ã¦ããã®ã§ã¯ãªããã¨æãã¾ãã ã§ããä¾ãã°å¤ã
ãªã³ã¯å ã«ã¯ï¼æ¬¡ã®ãããªè¨è¿°ãããã¾ãï¼ Looks like on ARM architecture, GCC and other compilers may mis-optimize memcpy and assume certain memory alignment, whichcreates errors on unaligned access. To avoid this, either don't use memcpy, or, cast the pointers to char* to disable this misoptimization. More details here: http://infocenter.arm.com/help/index.jsp?topic=/com.arm.doc.faqs/ka3934.html æè¨³) ARM ã¿ããã« memcpy ã§
ã©ã³ãã³ã°
ã©ã³ãã³ã°
ã¡ã³ããã³ã¹
ãªãªã¼ã¹ãé害æ å ±ãªã©ã®ãµã¼ãã¹ã®ãç¥ãã
ææ°ã®äººæ°ã¨ã³ããªã¼ã®é ä¿¡
å¦çãå®è¡ä¸ã§ã
j次ã®ããã¯ãã¼ã¯
kåã®ããã¯ãã¼ã¯
lãã¨ã§èªã
eã³ã¡ã³ãä¸è¦§ãéã
oãã¼ã¸ãéã
{{#tags}}- {{label}}
{{/tags}}