From 0435a7290dd80a2c21ab7440f99ad9a78c1d0381 Mon Sep 17 00:00:00 2001 From: Andrey Lesnikov Date: Wed, 7 Oct 2020 21:24:54 +0300 Subject: [PATCH] N14: reload, legion, fontdue, ultraviolet, godot --- content/posts/newsletter-014/godot.png | Bin 0 -> 16365 bytes content/posts/newsletter-014/index.md | 121 +++++++++++++++++- .../posts/newsletter-014/legion_violin.png | Bin 0 -> 25997 bytes 3 files changed, 117 insertions(+), 4 deletions(-) create mode 100644 content/posts/newsletter-014/godot.png create mode 100644 content/posts/newsletter-014/legion_violin.png diff --git a/content/posts/newsletter-014/godot.png b/content/posts/newsletter-014/godot.png new file mode 100644 index 0000000000000000000000000000000000000000..5e872e956a46591da9e3c460ae3894935a504422 GIT binary patch literal 16365 zcmbt*Wm_Cgu=bK58+37(#oY-GVUZxg-QC?Cf(9qp;t<^3f`{Pl5Zr@%a69|F?>{)_ z!^~XQNLO|BbamZbcSR~Gd`3eiLIwZ;Xfo0gDzNJ#>^K3wgPmvKm``Ar4^GnBt^fdf z-+u>O3KKdp06+ndkq}e!$~w*V%rcW~y{kCtn`rfQSx!geYJmGAk*E)~`vffwmc58t z*F2Z3iQ44R8_TD+km#U@pqJ^`q?Cb<{UxCr%$aCaEcba!Gbga{DOU8%J6wjXfPY-`t<=Km=dEP!LzO3G%&ZFVl8Zariv|>XdC{48~39y5~Ujbl= z=?G(put2*1 zEM4B}2k=)A^M4kJIrU*#4&>$#pr^@~75HEs{`W@U+u(FS#(tw~)~PM1U>t3rzHvXt zk@WSNtwBM?wO?u0>(-O3zNw1-`GGnVR9X0bJ;9#s;kE7ty~bl7y9t6C$y>ZRYY*2o14!+zj}-ao;n&p%KX38muIq&+2r0ZQ-B@TE_v%i$R ziJ}X=zwN4fTHFAV{DFF6+?*|^@CH^~b})e?_ZEMzZkc`eExfzP+<39u{N({aeq;rK z<>a2CG97C8cT9L%G!pvsyMMkM?A(1di91f3Znc?sJrj>JFDX;@8xi%nP!v54c#KyO z(%JN8FxYTj!%y|!y~Y{D|D)!ee&=#`=41YpZ5Z*7Y@u9C$Ffv(Up#wp!=~IeeUDvI z`uz2VH%{bs1uF*Du`CJNkJtO&*b4cQ zIRun!Mnkh}>O*Lou@HDlwitCoh)aIR-*LC@h|zsnNm+Pp<%dTh*`()kdZc@n)ouDL z1ofTa?YOBRMJM_hSQh5B#BYP`s6d$#D4?0P_&o-?yx)%Bw;DQU&s#$BhW;(BVuLbitZem+s$ zFo}aa@DkA!sqM3irr%Cm&FhHTqRYR!4YI&15eDUhWHlP-U-SJJ8x+f&K;z77m9xu) zu6+?#u@PRqktCIl^_id4Zhnr{wle6^#*(@$a+c0FG4T0Fu9`yUr6%%FtMh~`5p{YH z>(fDC&ehTz!=X%*(d%%w(er?(!`a%EQ>$P;^0)rl{HE}1W4+wpwW2PimfV{CsR&WC z`WGwvRaK+=shFaZ+d)8Z!HVIL|80VvXat1>Fn?y9xMUvookr0D9Dqkb&es)JKIN?V z6A%;(?9o%N0G6GKzPJp>$W*0S7PMz6IJ9n^SZyfZkUMMr<57rS`cVK%#vzHJMeNuz z(_uEC8zfv5NE#1MpRl6H_(qz`1PW&S);i+w@rWPzNhkSb>wZ&9E7_HOeqsGFT9W+! zUWjOOKWX*Dz|-3u(o?{je#+o1j?ThvnTt*_>QQ}g`?u%L-k@!N*VOT!e#-J>I^=`I z5oc`0+pz);+O8?%g_-$tjr61^WH(_uj4NCA)hL18^P6Q%5c25Xew-GRYe*O`hn9>O z;UH#1HC18xV*nrnVt-TZo-MCYpl~em4)Arw;>50OLKpU=Wo>R+MIW^y98%jf(OTVL z-3GG>iFl1wMN=kMWu-Ya>DB4W8flc;Kg}YIG2+(I!`*7bKz#)oH8R8FdVwk~iyLtu zi`3eYIofE3uuz3LKVr-H+`3BDy1^tcbjp<1+ICPJxazU z`{q6!A2g>n9+}mple^G`{u6#XI9OpT70NL^SP-CtXxqs~L2evYGHwTaT6m6oY@C*2 zPRG@`9u{5SLA3VR*=%Q|E~QA@^P4;*ZL5?g#~p0Mfj2@cYNtv|oC!sp-R)GQBupJi zG(QTP+bJUSpmb&p!M{9Bt} z6N&+?*WtRDJS(mWKn0}18E`jcVI-w$M-B&pc0p6Jx>S^bMkI(b)Gw&FeZZr0d+nwi zgiddwgEU{^1Wq9+Nscev5beeuO~mo2zWtz=*--NP$?Ie__@{a?|7EbyEM^F+2iZg`YLCId z(OO5P(<2F{Qd1Erhn>R9SPEs_*$zS@;_FRIPT(`cj4$=^Z$V4vgSDmwNz&>R%RhKE z>|RIw(eEj_p9e$@U(Vwz8kY$(bXL}l=JpBeKLaCaXV%064Ed^GfAdv^Pe6$jX8C_5 z8^qpIA^A$-RyHdNK&{K`H2KH8Cnaeucb;!~^;4PlMVGYp%=u_T*jbOLfg&>hRGto(w4m0gpXYfe-3_^et*_&Q_h% zTC-;Qb6Zx1Yu97BbBlJ`YR7g}o_o#%!}Q2xx1W8&Ul_o?c3h|Y*Yr9Til5{3S<+tjtmR)_{`9-GsK5B!Fi!!=fs71UW0&>!2vlM{&0 zZ$qM0QwIx|dZ^krUSHo(NLMP18*F|sG}<^<^_t8zFL|jDkf6kenIu*kK>%gA#Q~6 z3TwM{zr3L-DlJ;(yvkW9=zOBe(eG)ttPWhYtfm+;*j(9KE*;B6KsTFD&kzdAfFP1; z)?*4&g?=~F!I9AJ2`x^DGi|&9%F_}lp7L>0$kL1}!vg>jN4$D%uNB=!s21ZHbF#38 z-(Fh`T2D>QoqLYFJ#Om5v;6FF=Vo~h1Vs+mdLzM=8y8z#uTNxEGYCAsmy$l{omcZ$ zR-}+WI{TGYonG8(ODqE}yCqnh7c)tYZ=0?_{g{RB?i+@0_~L2mpXWW7R!`4auUFfw81M z_xnFLv9iKOvW@&sA~&KFJ_Vibe(V3W$j5R`-)Uq}u#*NQvTSAbn1p@{BWZ!8E9AMP zCSJnAz0n(0RQW^xaC79VJq~UgTPOTK(g-&(NY)yHD4f=yP=UBDZGlAzS@7<0;9=xD zmU~EQ7u6clcKPuLB~bsPY16FTCVv!!U`I;@D48^E=CfK+_1b|d-^8oAH2yd;WgttB z%;Mn0gnWx=dL+uj>Kqc+l;Nh4lw)ZP`AW_7>SQv6uVE-_e}7|%?|*?!c-&T2NCAuR z!#DgC_Ihw2aztxQtfRZuMPh^M{9{qUs=+vN#qSd&s1xucy>DY=q7w{PH=ENLb=cmM zhuG`ukp(Do9#oyzJ$h2Qa~C zX*Z4r?B~~=K?R0~iE?+al?qb9;XL9m$f@wqF_V-jDw5Da?N8j&k_DMRWPd=GSN6%N za@W@LP+h2J!Hq%^SGB)kjbG#D#zU9D%CC%BApk+bi(`By9A+}nI^rz7J(^iQQG^QQ z=uhjkUk@2k=lFjkXTXcYxWP#z(*3@==f+rFO;R>$lO=PkDkz~$``(=MLLHrJfSM*E zm>wI3QAy+!*#tE6m}4wObz%gR6O*j1g_v`SzsH%npz&J}`p6Xc4(0{$Y>g-6i07zI zPBhFSjOb&k$lz{qfP!^W8LJfGz*bYvi2CNf)2%3@QwX$w-vKJ6vSlW}siR)BI(*^` z3l`#nH|1#`QwFA3erWqGWb8*MH=dAqwE7%_!{}L=fAB8!#|7Mv-@~yZKA@kq@hrz&B!QdDaZ^{=LR2m%Kpzt_WuZk|KI1^g)D18{`Yg~6uofa2wLF8PklHt5&+hR zvq@JHg?KmGp^I}p`h*CEL||?*{t~obxCUrgl+MRD!8StWw?l+Bv-l zJ|nNaw~J$c+f(3ByP@mHhL-j2??q(;#UcFhZ*Aw&SukV4J=$|9v#j z6y|9PwcFZKeBSo&n^KE6{2+fWF%p5c^W#?`^lc7=ffJw8i;giJnG0#8x!lxI+%Lyh zGcbx1iAVD;ji}PxWLV%bK7ErM`jD(Husm*_lpdE8VdYdmSI;8 zu_$ra8EjQ$gGg0a*h3^*k8bcc#;OF^9#;Klx&q-icmDdie)s+xQ7FVxd>q)9-K8yF zr3k?6=Vs*%*v)+ACr222UI#^$>zF^y;fj+g^ldm z((T)K?fP}6J^SQ&)wyemY~{d9O9n-`t6@QzwjbGFN8k(bYd8#?iT6qw&aAZz0*5W> z6;-dwa>wyeoN|Upl~<4Mj@e!&-=Qg`e2UuEFbuBDxesZXFlHopGf2xL7Iz3ge~;D^$EMd9jQ{{WG;Sm0lzf43snshN$i9hxYb%404gx#YKGdeG79= zds~=kQAhIfvVN?_7Tb2gS!=v}rj{WhBoy{I`IA8P84(EyJ2IG-(e2pgg(f$92j51) z6a9$g5#tq!o8RT-2Ypn#$LVsD?OmSuH$)^v1hHRQ;LuMIAP8beUTbSvXMyQ>#(XqB zTQR*&v&g5R+%9jw7oImq6+6C=*LpT^lK*W15Ik-5@3f`mbglhvD1mBSxrTX^z!U%o z{a$RHIli#Gu)H)~=dre&k&%(rj1&fPDKVhFImO<1^%dJFN*gn86%XhgOoOWP>;IFc zt~VcT&~3IOBqYP^AJZkFOOnZ*yt`dldA%B<8XspNf1X0xxa(^04jAz71dkuFb!n6F zMTGS72S&!A5mkPl-HITmPsAG+dyN_Ya(twX4h}^{MSVUU?(Td%vh6WaQs%5-?Ay5v z3JMDB{Kq!?f>Ei{bW}f{>h9q&CPLCtLd9GodXCs?iE(?g|I8x$do@LHts~gblR?6! zrilVr(|!9Gf*~@uxX3GFVosC(g_O@}^G{vD+w;Dt=xtqmwN{-;v2JwMO&i)G?W>0- z_+1gPU~3b3A+bQ-1Q1ic4=3(1EPFD_*N|e^YJFT~zN+ocA3mS(bViB(-@n;Op_@6? zfZXzk)XUUg3st(FCx7aUcfu>G+v=;U7509FobWteJ4A@O46f>xWLCJ85Uf4$mghd+ z`*k6m1#Uj<8-n1$i>i_Njjn?erk~^W-EY*%UoVOfLyR9eK#<$U=&(+5 z=O1KzoV^h()KwTRSaCbWvRFDKd<*3WxE|*{|GBf`dv`JpYY7z{ef^<;T==0ciHq=? z>es9s(PKvT>y_e|v3?OazysIEikO$9^W(QIjKH6klk2}H8Aq?KCq)An^+jW)xH9p^ zwwv76>h&`B76Q|B-Cymdn?aP>!(KOwF1MFdQM#Vi1A9Qo5V2#&!;WAer$Bzsks@Wn z^UL}9)3MypUy~#hlozXaQl(Ve1RYUvVD@`tadkRFh6>_EJa!{296N^L-}U&O zcWTCBVz^rr+sBSra18XmN*n8|O3Fxi0(_+25me03)T^sbJXU^-%)kHjKJZJ)EW#Zt zSC7#}JjS#0V*@-xhV?`bW7t^C*)u9qL&qZ_S-m>=^Xb1040Lpn%X{p80)&C32FvqN zHplS*l6a1x60;^b5iqTHxz-Zo`E3py|mRw>0pO>To11$t_4};2>R@>8x87Ug+v4O6{7J8nO;J=uQc`td<{WD$8lu*7zXnPiVtXo zR%*Au95S*U=;)(dE;f5+vP7{W(NR&&gi#6Y8=i4ZXShhFs#TX5Zjvh;sp%(=jKdgJ zpl!ZBjmOG(K0dxBHNV6^A_dBEeC6g6_F_%{;`5n{Pca$}Tv)^A`)7wa5;^pHof0#Y zxnI{OSY=cgiZcMIBOJ5D6irI`~of$zx7PfT2X8 zfE`-#K9!A%H0?bC6a3T|$TyK!4deScCPM-mhnx_wBet9hm8h@;)d%q6}2az0>QTN^5- z;CYad&;sv`XXt(JrBjDcQf~dQe=(c^nLr}XxbxBsi3t`;VWEuCCW7gPXrVGK$&4siQXJC0Th2F9l-W%K)~!GXxi?dGo|xHmYhA zqntpt!(roRxufNjd4IKcIF1`QnaJQqzlW=tEPw4M&Q6h0H8Fu4@Y4c*R7(GU4Y|bA zA~-r7Wnp~llx?m@BPAtO&}109n^iOvEuuh5pgGjKJt)QcD&DI)<_X*iM2&zow#hB+fqtT=wJR`hGR+GIT$N~hJz@{e6kBSTrFv|2`|EBTTBuoIY+b2T&C&Q$y#Bn9=ThqUaEnQ^(Dy# z^Ju^}c5d2H@E5vJVK$t@81EnVNQKt()*3Yioj&7sxc$h5#l?SnQ~miyE7Y<2vUQ7} z9bj70j&=xXzE);=$);rt%Su1acbk!Jie3cWwY0S07s!Er%kSIkG})A^Q;_+~on;bH zXe;3Gzbu>Hcj8ACA0F4dnR%3W8PqaAO~?CFSA-azEeV_FFpkQ0^Q!%xzZgq4JPZB$ zIz5GhA3N71ezeTd{(jx=bi^hvAyCIV! zLyWCE2M$gL1IP6aZE-3x$WM#$BiI@rWNzsj1q9CoX%_RPv%Y!3l9%x3)~x(gEFUI`O@%ZEk8Pu-6%Qt z@e2R8qm}0V$TM*5?v6A~5w$4bonhzjl2tNZ>8_+OhLy;W7MVPr$;_ zvOfxUm=W71 z#SO2WScI+@g7DVe?PyqIOb(vVP&djCW%%csQgQOHMfscStsIRZtyFiOHq#xJ5tNrk z+hw`iR#05u(5W_e+rW#EbH`;jhk%MIsieyc+v+aZ-X@p7aTX{mV28u`&h-fC@Xk+& z3=5+x|43R=!O<6Sw+JOMhL-#d9H(&ey`I^(KPB~Tl62$f;NVm1B7GRhM<|EwbrE0W zjXZZ!pc*?kEL%6UcM{W?Zn{mV zgrDpX9de5`06?Df9~WShSwGjE7_VU3>uP1n1I^k}xq+matOSAC{@i&V0N35L`L-p26 z5P0|3>wDcCe~+izQ`7ajbaYz>2Z8I#23Eee=jFEL7zlOfP^Yiy-8!f61cPSja)0sh zd7+(px?qg+#tyEon3+%S(qfb)Y^5&DAI82+T6i{qFHk{0hg=w^<} ze^;nV2f48IpONB(W#RSyGYX3N7YAQKV&OA#FH!q*hrG`1H!Q^e-quzRf<)!(Ii!we zH<;!aF`otU!%%)${4w@s1l#4oUDD)ply-fN3lAU)JRIR>m&v(+Ld_zt>pXeQq0MdJ ztvi54i!D&?Sjy()61eU5WEl5$(>}|qOB))4NXgiQ4k-1|4)=$#O>~f3ser^4r;K|! z(vby0R^f0tAnUi$>8XgVk(I-?qW)-%-ZHO8!@w{0{(R(g!zZ9GSX+k`#~D8^|J!zzsTVE&gHWLn{J6g0jn#D*MlM9Ea&NFgq~f(h$!6;`L< zuIZ^SO;*Wy1$7(#A}=FUe6uvHpy0Z>7SY#VRb}|(QwGO0Vf5mkP45DEZnod^m34*# z!B-d4f8GN4U!KW1ZL&d}crgR&f@T@zq(EHZF5F~0CQjfd*H|u)LTTOPwoDK4827LD zFzQXD^wqg2Hiq4NZs7a14%rI%{FGWvuVcrI9n=i-K z{HN?fD13OJ^;ch;E2nIk@hUWK_3GnYH69$%csM({BEIyVR>4w)-bD*s}A> zXd#SUM&nVfgn4P)r=8yy4x@_xu&dmoVclW+ska>QKB(^dsKd4e(Iy=z(Pa_6)fQM@tYns`K%Zx9zWIHwU6Js(KPWHBo-Y@HgXQi7 z>g&SCn7)sJD6<+AWE1RHRAuY+vUG`GYEhTZ3p>q6>5KK z_)0H<6_oZHGdH}e-y2z`fA96h| zl^6IXS@m8VTej1-x!0~XT^-|M{rieY1A-_D!Oj#AXx*CQ=@N`favNOxk;cNc{5b+- z$9Ou0E=x{{2)3)NS3T-bm@Z_;%WBng3gee@5N}uBXNEl=!NNSOC9tz-dJWPpm(fU5 z-4$xoO!cusGEac@sBBrREc$b-IitFgF*@bwPs1C|^6^5=?vqmRUZiJB`ah58Be(!= zYK00(RpaU{G|7S^s4@dQYz7yRFN?MA#(`j>%Sbk{8H|4sD-s_ zBVuLSrj;?DZ#K3Xy0WL~>A!4d1eqV}lsp{q;ePlIZSWFF06Dpfb_j$A5BS1O388s> z;TD8Z#ijKzcqm8+rZOt<+ITdQ$-BuEMeqzM(3$)~qZp2K|Iw-s^zg*xC*Fk`){v!L z1@N4bIfg`HRMcrGJ6KBt00^d6L>I~j<TijOAIV*GnBJvZwRemnC-R~~`kBN8cPWhrS8VUz70$tZza<%&gP<_#;S9wvaeKcJZ;HJY(q4)nfuU_JQS^}wHK0(Efkie*I=G0TA;ELy zi$X<$RfzS%B`6q;j94l>wPYZOL!TD}0fV(f772i50n7w_fglz-lzue^Ft|AhZCc;;lwJ$l~-!<1B0)?iRYgj-7E zVpGejkG$;e56p)$ySn&ranR;jZU6aN^Ka!=VY8N?a)1-#)QEM66kzo6inT&H7Nd)R zJ`J{5b@pi4W><_Dv&zqySyO}-A{^fTaHIyYnEoJz|53JVaGOUumXPm_0~zO`S;KY{ zU=Ukg#3KCw^+exERE#T*9dk>(1XW>CFsD2JeOs0S( zc-Nf#XS|8S7A;pJ$YS}1ireNw4Ntr~sLQ#aI^@LBd$pRS_R&81UaFyTZA@Lhk#C6EPpPU$Lkv7%wv2MCL09ejIE;b zr@TJp{2hqQkQM^~R4rO7N-ZUT-*Lmtxto#ck(F`Y?NHTh^$DVzaymTsB|`WzVA;*# zMy;Wj_`cbvI1DyJHPfka{eIIghy&bH0^;C?pcY+JJgS-W#n)u!4IJ=L9rxgj#e2gYZj?llsA8#i2~N!EEr;ZhCAXd!p3Q2+ZmM^JX(&ct z5IYd8Ng+m?+AZU|&6zPi)y$aDj4eV&{}8;#kV)69)e8hM`#8-u#DLz=G7nC&c7_aT zv?nUlp0pnhIOz~RsKAtPy`OTdL!35G=y$LopJNpja2&B~!QNdvmPA*f#!W{_ohp$d zS@8^~*QNPne)a?0o_@O+P)FV;T6uA^4#P{F>NO&{-JCqCDDGdpd!rhc>wu;>@Ph=_ z;MI&k=&#Csn8RkxjAXs@p#xLXloEkpY(tn(M$koJ@4_dC=o+dVncLNVOXJiPff8+~YNZ7l{s8YQvPq&$jX zL8(aAkxMy^<9%Lhm-={utC_AmEcG#EwyCJCBFc>?@{t`{q4D@x95F}TaHPg7BGIqb zlA31sdD(3xMvh2WAdcZlGmRnvFER>0d0k!Z8X@JFeol{zx3P?$8T!Q(@^|P55bz1K z;A{6WDFB8cMjo?wj39An_smk+!%9;=pMzlh1B^#V-73TzGt?ffy7-9m8=X8|4$d6> z#<8$Fj-k?teBL>yD~x>kZ5TN&h3(OeHpa(6-dDVesfDyfQk#EHu-u!>QXvMxRGk0J ztgqo8jF=UxPWaJ|QLv}9JR=WLk#roFdjys}92j(BCs!~H{4j-Cz>(+hZyX#~P;lKy3^q)K2;?hlSUXX(OQ|{K ze}}%d`3uf{|AG?fCXk>&Hw)28rq*WN70U;~h!!n#e6A{x4J-D<0+u}7K_tInH+0%| znaL`f3a-OeNMp4Tv$TpV2%Cf}wf>+9#-cJ!dizHE^T%mlqPco4z z?9i{EdTw)$15(-o<-v+v5>*@>wf$r>$xe9~U2p)x5xC&zSRS*OyRJk`aE1S>?56J|ljPLyMQfX1IB{<(6!kZ=YNINeK^=qCW7^I+&LLt)lq{ zeJCEU53^L$tpHded3Vd`e)E^pd73CxcCyeN-Z*xxc-WQ&OR-vEBSOffySrjxHWO{?^BzK}^kh)s?xSakxNan-_}H5oBdu zyh)IBmiP6Mi)WEf=wp(sG9v*}ejQZ^RmiK+g0C6ZQLF&kb8RT-M$p_>!QXHTBMs5z z8&JJQSaUpqAPKYk<2L(Mhh**=LWR*ubYC2LZ0Pofl->^I!KQ_F3K+cxFeHe09Fu!` z7cNWT36ZA2$~A8~lc4(m7Yg`9f+sGXB5$72N+Hu}5O`P0#$aLiTnzg6$HjGRB9xkm zaUbmCSyfcjdBJ4^_5>dD>Xmbj!?<44)C?aWTIMa~tN&(auVfA^b6xoRvM^n#4YM(<`&$@gEAJVF2TC!euf+L|+97(HAXwfpwE9 z#h+FdNT!^-7*X}Bn{H-kIC=j~orm5JG8(j=*M0HuUlKI$zKcRZRzw^)JeM28Wy08R zUDxlwo^y-S>X5ue0ssosPBO?)b4iU_YNo`(FNV?SerSr%KsdmU)@6qo%XoF#&_0#J zvuTc-^Z*=)x<)juMth}ElL1^r2J25`8%$`W_L$`?f+kw$Be!zh&ZiBlDQg})GEE@3 zvRS)eIC(^m=iM(YzH)k5*AzipY2HcBah}_Pm#!~#h}cI&bRZc-%3+4jV4yWJ7=AD; z9u(~K{OxjoQ$m4?Hq|~H`qv{j?k-lJ;|R;21W{0)u%F5Va=4#Ld(!T zT{luQr%q`yPZwWXR?y&1@*RIf@ycY{BOmuMqt3Yv+n!fIL-cw-$^S*lkq=4KjRN}1 z%ud-IuU{Mpi>6`AuUl8bV;U%h0cE+qbRzxchNt>wr`LeTIRbkMN8NOh_M<{#ibx7E zzt|tQX`ZlLXOi)4QEP)muXS8Tj5DGu+eAhTSZ{UtX?c;H=yUi)gfiSQ$;9}O3d$@7 ze>ITdhMRDw3kV2hB*BQXWEI+zw%;cufrsR11M~f%vmITRtD`8QhkQEWf-MFWly6(- z1_$j6Y1or+)|s_!5Nmil?RaY*2)k!w;af3zs`}f$gv+Uu2?-U;Gw1;G*323+T_*mZ z^<%FUbS>d3&Z;%3X8P*A)5<9K82cDclAB33s(*|Fxl#B=E29Xb7bCtfx~5upT3_zv zF0g+QmunRV!U%qmJWF#V%zIZ&mfs+y6V{7+UB#p^{l1-DOXA-9$_Z-mz1-3B3cyGj z)xq$Fj#*BXo!X2WBDHtKHK98w6;=Map0_kG8Yn`J8z<4e!_qQzG0Qn`BqSt3;@s&| zQvM@}IIp*!H>&8XRfpr4=qMi4;=N;55(2OoMqJI{_u21Tbu(j*9~aQKNcv2*ZwfQ=$|%l|1_LA3b+;J>b7&YEsKI+JQUvOEG z>A53mT7+wHIzVUVLGxWo9ucyL$YylKioLf7MJRew-Sm!H>zn{#Aos%YO*9w0(~A6~ z&@wXzdbG$6o^9y&OKn*)1LX>_jT7fOekoN;iJtrWABz5d#OD`{f&WB7Mb0ds)4e!) zpTqe#hjQJ*t9vsYfhn%U3E_S(0T3j0Y3^jWD~db&6Z5*@5jH0-kb~IWZYyD}A0D#F zZaJhq5DIT{Nmj!a@4V)~-Kf^;;(lcTk39oh;mFYtF>PKp>Fnh+a08AQaEi`?%bLw$ zVlc`BxO?m7Ue7Q&YJxwjeg!Sdhc^=`l2tV4Nn9OVSh3^fa;6tB6k5o4#V7&g%ML#S zWuj+(Y5lOAOSKJC1AZMfaVT@y&!9=dgbe-Qo#WZn6qRXUJ+gyU9&lV)M5$X89tJb1 z7yHLx!(w1}wBdS{pIl@RD~^NIIgR7itlom8U@yNvzHV0B1hLWel}0fiz@cMic$1h` z$cNrgSd0(FrC|Vuyl&>{^) zoh#>$SQPvnU-UJ0t`>-@kS9$b&j|-c6ly<0457}Htd^Z>kL8c@qECXB&2qy(lVgU< z;Gq)1xcT%1OcKgKjR;C?Nf=Wn3K9{FgP{1F8jcf2AGPfkvo3usAJgM@u+@II_LN<@ zW=a4XH#0MFpq-R>=V*_uab<|-wlBuNnB79Qcp z`UJ1X)A#6%z zI@Z)^tLRqcEzIUO!r*ST4icd9xyA9PX3htTct_Tle9gXHyXq#xuFQo!jb%2Lk@k3W z4~&PVWlsbcICQJ(ZO(7)TH4{E%R$$8Dm9jLtS-K@kr@T z-be{QaVQ7|MqiA&dGAPZh$q|g_uemBw}%U4=eNT$_AowtMfd$qOZOW;PbO6UhtUkr z0mh(e^zoVwu30E(24}B6jl{xKCpq}iONgcro&%%BO{$jKMzC!(*dhfHGgN5wfPcY) zJMEu<4prbU_#N^9BBp(MGA;Kz8;GdL@>}>aH!vh7I5Di zsb%t`ZrR|x*{12k`h9>RVh-0uRxk{2DnnKC)39ii6U`-iLXBeRp0I&%&h#Pa*o_na*Y3xjB=pLgR43W&JU@Ox zW925E|B`#P>#i7>7fM8jMdaffULLv)c^)W=((q5*%y!lo;i_T{AP=-+Y zP_1yXNtsOPt^uQ?^>5QwhAIq!DUUI8e0J(_o}J$=`pn)_##Sb4OBeR7C;WodzvM1i zm)h_huV4_A6U(Z`RJqyiL|6zo{#1`ZY=1kCXGE&{0EElavbmcUYuDb`tkaf%q@3T% ztu-m>{`}W~W!f_jbB4NJQaJRxge<|8q}2Pmj*&HE0Z2MLEx5eDNPbGRoP+l3o*39j$l(G|dIvEkl)9*{jw#dJ;HXg&a z(I$wx7;6>1`!2R^W7ci1sF^&pApQki?g1WR^5xyM8AS#+@x9HrC2O8567jtJ?k0Rb z0&KCwg2;bUT6_fZcv_58b5qS{3x=?NG*A6bO(p!3sFb7L!=YoX#ZwQ`S@Qft3Ky1q zVL_zZ;`a@^%~QP2S(7O)a%j$2q=TH2tnCVJ67+!6DOT>=`FS7sPIr%9FaN9mKk7owl24*Bzux9at zJpllTA^)SL{kPkPJ>IqIdX;gKLYtd#y^t-7!RFFgrL|JykfQgH#St#vmu>QrfV1{W zvCIXdz*GT`|EAFGUcOsnvQSlYv|qHZZj^0M$C*Bel#%O zvf8>e(cK2E5$ERe)F_Nj8&?Cm2pq1}-5i*9U!M8#bkCR0%=#SOR5-S(UYBsM`d>T* zc1y>EH`+H#!$Llox9B_w$z@;Q9#6pZ=X6y&+mVh;^W0x3h~MC9esX7?Xq9iF>lGBr zJPTM>xlo9h?Wym$^YkR~yP(Txsbuj{)Q5%hu+qhbL4pqTp2H<<4nu-Ajy5Kf)i^ z&Wq>5*cFM(QV5SbBlX*R3y0Op`u%h~)8dP;SgCoLoH%xrZ2TxQP8f;i*7=-L0jtuC z_Kecos#JK|PKn(&JQUeu4k_vS6Dgg+?zjspwULMkgH(O?(dz5VDquMQkO0wW`9N{%(&sMY!wDA!^<=1n2a_aWzAz; zt=%Z#Lnn&WCQ&D+Z!jY{Ey6L7Da%@IsAf&noy@^htJ3jT7(QzuKp}seoovhXrpLYb zt2R*xqJT6`l)7rPYGj=mxEI4}V_p4^JFYWhxg7UIK0qQs=r(2NbCTn~E9YL85|j`qNLHF0cy*IQO=2`;{KDO0vA^sy=zFd z^hTAt$yn)dK(GYe2nz)~rX)w@y1r$(Eyn^2CvWpoYLe{nMQ!JpMk{>mroeA zIGq)@eZyT-;QijwlenCS-a{d^e=I&p;|!PaizV4uF_YR<)c>Za{r_|M-`>|KwfnSL TputM@0RS0E1&L~iQSko&K8Lkc literal 0 HcmV?d00001 diff --git a/content/posts/newsletter-014/index.md b/content/posts/newsletter-014/index.md index 8ae7c49fe..25bd0ed96 100644 --- a/content/posts/newsletter-014/index.md +++ b/content/posts/newsletter-014/index.md @@ -407,6 +407,16 @@ _Discussions: [fasterthanlime-post]: https://fasterthanli.me/articles/so-you-want-to-live-reload-rust [@fasterthanlime]: https://fasterthanli.me/ +### [rust-wasm-hotreload] + +[rust-wasm-hotreload] by [@ShekoHex] is a PoC of using WebAssemply +as a hot-reloadable code logic at runtime without restarting the host process. +[Check out a video demo here][rust-wasm-hotreload-video]. + +[@ShekoHex]: https://twitter.com/ShekoHex +[rust-wasm-hotreload]: https://github.com/shekohex/rust-wasm-hotreload +[rust-wasm-hotreload-video]: https://twitter.com/ShekoHex/status/1302973994417651714 + ### [Learn WGPU][learn-wgpu] This month [@sothr] released another chapter @@ -524,6 +534,27 @@ representation of the scene that is then used for lighting reconstruction at run ## Library & Tooling Updates +### [legion v0.3][legion-0-3] + +![Benchmarks](legion_violin.png) + +[Legion][legion] is among Rust's fastest and most powerful ECS libraries. +After months in development, v0.3 has finally been released to crates.io. +This is a huge release amounting to a near total rewrite of the library +and a major step towards a stable 1.0 release. + +[Check out the v0.3 announcement post][legion-0-3] +for an overview of the new API and all the updates. + +The project's repo has also been moved to the Amethyst org +to reflect its close collaboration with the Amethyst community. + +_Discussions: +[/r/rust](https://reddit.com/r/rust/comments/io6evk/legion_v03)_ + +[legion]: https://github.com/amethyst/legion +[legion-0-3]: https://amethyst.rs/posts/legion-ecs-v0.3 + ### [Thunderdome] [Thunderdome] is a ~~gladitorial~~ generational arena library inspired by @@ -567,6 +598,64 @@ _Discussions: [slab]: https://crates.io/crates/slab [ABA Problem]: https://en.wikipedia.org/wiki/ABA_problem +### [Fontdue] + +[Fontdue] is a simple, no_std, pure Rust, TrueType & OpenType +font rasterizer and layout tool. +It strives to make interacting with fonts as fast as possible, +and currently has the lowest end to end latency for a font rasterizer. + +Fontdue depends on [ttf-parser] for parsing fonts, +which supports a wide range of TrueType and OpenType features. + +A non-goal of this library is to be allocation free and have a fast, +"zero cost" initial load. +Fontdue does make allocations and depends on the alloc crate. +Fonts are fully parsed on creation and relevant information is stored +in a more convenient to access format. +Unlike other font libraries, the font structures have no lifetime dependencies +since it allocates its own space. + +Project's roadmap: + +- v1.0: fontdue is designed to be a replacement for + rusttype, ab_glyph, parts of glyph_brush, and glyph_brush_layout. + This is a class of font libraries that don't tackle shaping. +- v2.0: Shaping - the complex layout of text such as Arabic and Devanagari + \- will be added. + There are two potential pure Rust libraries (allsorts or rustybuzz) + that are candidates for providing a shaping backend to Fontdue, + but are relatively immature right now. + +_Discussions: [/r/rust](https://reddit.com/r/rust/comments/ilnd41/fontdue)_ + +[Fontdue]: https://github.com/mooman219/fontdue +[ttf-parser]: https://github.com/RazrFalcon/ttf-parser + +### [ultraviolet v0.6][ultraviolet-v0-6] + +[ultraviolet] by [@fu5ha] is a crate for computer-graphics +and games-related linear algebra, but _fast_, +both in terms of productivity and in terms of runtime performance. + +This month [ultraviolet v0.6][ultraviolet-v0-6] was released. +Updates include: + +- Support for 256-bit wide AVX vectors and instructions + as well as 128-bit wide SSE instructions which were already supported. +- Support for f64/double precision floats under the f64 feature, + including f64x2 and f64x4 SIMD-accelerated types. +- Support for [mint] for most scalar types. +- Lots of smaller API and performance improvements. + +_Discussions: +[/r/rust](https://reddit.com/r/rust/comments/ir24mp/announcing_ultraviolet_06)_ + +[ultraviolet]: https://crates.io/crates/ultraviolet +[ultraviolet-v0-6]: https://fusha.moe/blog/posts/ultraviolet-0.6 +[@fu5ha]: https://twitter.com/fu5ha +[mint]: https://github.com/kvark/mint + ### [This Month in Mun][mun-september] [![Mun logo](mun-logo.png)][Mun] @@ -715,7 +804,7 @@ The book should be going into early access/beta in time for the next newsletter. [@blackfuture]: https://patreon.com/blackfuture [rltk-cpp]: https://github.com/thebracket/rltk -### Tetra +### [Tetra] [Tetra] is a simple 2D game framework, inspired by XNA and Raylib. This month, version [0.5][tetra-05] was released, featuring: @@ -812,9 +901,9 @@ _Discussions: ### [rg3d][rg3d] [![a scene with lightning and a hi-poly character model](rg3d.jpg)][rg3d_twitter] -_Click to watch a [video demo of one of the new examples][rg3d_twitter]._ +_Click to watch a [video demo of one of the new examples][rg3d_twit]._ -[rg3d] is a game engine that aims to be easy to use and provide large set +[rg3d] by is a game engine that aims to be easy to use and provide large set of out-of-box features. Some of the recent updates: - Render to texture - it is possible to render scenes into textures. @@ -831,8 +920,13 @@ of out-of-box features. Some of the recent updates: - Improved hotkeys in text box. - Improved performance and documentation. +Join the [rg3d's Discord channel][rg3d_discord] +or follow [Dmitry Stepanov on twitter][rg3d_twitter]. + [rg3d]: https://github.com/mrDIMAS/rg3d -[rg3d_twitter]: https://twitter.com/DmitryS36934349/status/1312836831390687232 +[rg3d_twit]: https://twitter.com/DmitryS36934349/status/1312836831390687232 +[rg3d_discord]: https://discord.gg/xENF5Uh +[rg3d_twitter]: https://twitter.com/DmitryS36934349 ### [rusty-editor] @@ -848,6 +942,25 @@ Some of the recently added features: [rusty-editor]: https://github.com/mrDIMAS/rusty-editor +### [godot-rust][godot-rust-site] v0.9 + +![cute logo](godot.png) + +[godot-rust][godot-rust-site] provides high-level Rust bindings +to the [Godot game engine][godot]. + +This month [v0.9 was released][godot-rust-v0-9]. +Besides lots of quality-of-life improvements, this update brings a massive +redesign of the API in order to solve long-standing soundness problems. +As there're numerous breaking changes, +a [chapter about migration from 0.8][godot-rust-migration] was added +to the user guide. + +[godot]: http://godotengine.org +[godot-rust-site]: https://godot-rust.github.io/ +[godot-rust-v0-9]: https://godot-rust.github.io/release-notes/0-9-0/ +[godot-rust-migration]: https://godot-rust.github.io/book/migrating-0-8.html + ## Popular Workgroup Issues in Github ## Requests for Contribution diff --git a/content/posts/newsletter-014/legion_violin.png b/content/posts/newsletter-014/legion_violin.png new file mode 100644 index 0000000000000000000000000000000000000000..cb9ac68704c00e2fcdf12a33007516db04c58e8b GIT binary patch literal 25997 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