{"slug": "canvas-patch-we-need-testers", "title": "Canvas patch: we need testers", "summary": "The MonadicSheep Emacs Fork project is seeking testers for its Canvas patch, especially on MS Windows, as developers lack Windows machines to verify the code. Testers are asked to build GNU Emacs from source using MSYS2 and run a provided Elisp test to ensure the canvas rendering works correctly.", "body_md": "# Canvas patch: we need testers!\n\nThe [Canvas patch](hello.html) is almost done. Except that we need more testing,\nspecifically for its MS Windows port. (Though testers on other\noperating systems like GNU/Linux and MacOS are also welcome.)\n\nSince we don't have any computers running MS Windows, we are not sure if the code is actually correct.\n\nPlease follow the following instructions for testing it on MS Windows.\nYou can discuss the results or ask us questions at [MonadicSheep Emacs\nFork's Issue tracker](https://codeberg.org/MonadicSheep/emacs/issues), #phi-mu-lambda on Libera IRC ([open webchat in\nbrowser](https://web.libera.chat/?nick=CanvasTester?#phi-mu-lambda)), or on the fediverse (tag the post with #emacs).\n\n## 1. Building GNU Emacs on MS Windows\n\n- Install\n[MSYS2](https://www.msys2.org/)by following the official instructions mentioned there. - Open a MSYS2 UCRT64 session terminal.\nIn the bash prompt, run the following command to get the canvas patch source code.\n\n```\ngit clone https://codeberg.org/MonadicSheep/emacs\n```\n\nNow, change directory to emacs source checkout, by running the following command.\n\n```\ncd emacs/\n```\n\nNow, run the following command to build Emacs.\n\n```\nmake\n```\n\nThis may take a while depending on your hardware.\n\nOnce that is done, you should be able to start emacs with the following command.\n\n```\n./src/emacs\n```\n\n## 2. Testing\n\nEvaluate the following in `*scratch*`\n\n(Using `C-c C-c`\n\nkeybinding).\n\n```\n(defun make-rect (width height pixel)\n  (make-vector (* width height) pixel))\n\n(setq rect-canvas-vec (make-rect 250 250 #xFFFF0000))\n(setq rect-canvas `(image :type canvas\n                          :data-width 250\n                          :data-height 250\n                          :data ,rect-canvas-vec))\n(insert (propertize \"#\" 'display rect-canvas))\n\n(defvar rect-canvas-timer nil)\n(let ((i 0))\n  (setq rect-canvas-timer\n        (run-with-timer\n         0 0.016\n         (lambda ()\n           (if (< i (* 20 250))\n               (progn\n                 (aset rect-canvas-vec (+ (* 115 250) i) #xFF0000FF)\n                 (canvas-refresh rect-canvas t)\n                 (setq i (1+ i)))\n             (cancel-timer rect-canvas-timer))))))\n```\n\nYou should be able to see something like this.", "url": "https://wpnews.pro/news/canvas-patch-we-need-testers", "canonical_source": "https://monadicsheep.org/blog/call-for-canvas-patch-testers.html", "published_at": "2026-06-29 07:24:49+00:00", "updated_at": "2026-06-29 07:29:00.526606+00:00", "lang": "en", "topics": ["developer-tools"], "entities": ["MonadicSheep", "GNU Emacs", "MSYS2", "Libera IRC", "Codeberg"], "alternates": {"html": "https://wpnews.pro/news/canvas-patch-we-need-testers", "markdown": "https://wpnews.pro/news/canvas-patch-we-need-testers.md", "text": "https://wpnews.pro/news/canvas-patch-we-need-testers.txt", "jsonld": "https://wpnews.pro/news/canvas-patch-we-need-testers.jsonld"}}