logo

drewdevault.com

[mirror] blog and personal website of Drew DeVault git clone https://hacktivis.me/git/mirror/drewdevault.com.git

Status-update-June-2020.md (3362B)


  1. ---
  2. date: 2020-06-15
  3. layout: post
  4. title: Status update, June 2020
  5. tags: ["status update"]
  6. ---
  7. Like last month, I am writing to you from the past, preparing this status update
  8. a day earlier than usual. This time it's because I expect to be busy with
  9. planned sr.ht maintenance tomorrow, so I'm getting the status updates written
  10. ahead of time.
  11. aerc has seen lots of patches merged recently thanks to the hard work of
  12. co-maintainer Reto Brunner and the many contributors who sent patches, ranging
  13. from a scrollable folder list to improvements and bugfixes for PGP support. We
  14. wrapped all of this up in the aerc 0.4.0 release in late May. Thanks to Reto and
  15. all of the other contributors for their hard work on aerc!
  16. Wayland improvements have also continued at a good pace. I've mentioned before
  17. that wlroots is a crucial core component tying together a lot of different parts
  18. of the ecosystem — DRM/KMS, GBM, OpenGL, libinput, udev, and more —
  19. bringing together integrations for many disparate systems and providing a single
  20. unified multiplexer for them over the Wayland protocol. Taking full advantage of
  21. all of these systems and becoming a more perfect integration of them is a
  22. long-term goal, and we've been continuing to make headway on these goals over
  23. the past few weeks. We are working hard to squeeze every drop of performance out
  24. of your system.
  25. In the SourceHut world, I've been working mainly on GraphQL support, as well as
  26. Alpine 3.12 upgrades (the latter being the source of the planned outage). I
  27. wrote in some detail [on the sourcehut.org blog][gql article] about why and how
  28. the GraphQL backends are being implemented, if you're curious. The main
  29. development improvements in this respect which have occured since the last
  30. status updates are the introduction of a JavaScript-free GraphQL playground, and
  31. a GraphQL API for meta.sr.ht. Coming improvements will include an overhaul to
  32. authentication and OAuth2 support, and a dramatically improved approach to
  33. webhooks. Stay tuned!
  34. [gql article]: https://sourcehut.org/blog/2020-06-10-how-graphql-will-shape-the-alpha/
  35. That's all for the time being. Thank you for your support and attention, and
  36. stay safe out there. I'll see you next month!
  37. <details>
  38. <summary>...</summary>
  39. <pre>
  40. $ cat strconv/itos.$redacted
  41. use bytes;
  42. use types;
  43. /***
  44. * Converts an i64 to a string, in base 10. The return value is statically
  45. * allocated and will be overwritten on subsequent calls; see [strings::dup] to
  46. * duplicate the result, or [strconv::itosb] to pass your own string buffer.
  47. *
  48. * let a = strconv::i64tos(1234);
  49. * io::printf("%s", a); // 1234
  50. *
  51. * let a = strconv::i64tos(1234);
  52. * let b = strconv::i64tos(4321);
  53. * io::printf("%s %s", a, b); // 4321 4321
  54. */
  55. export fn i64tos(i: i64) const *str =
  56. {
  57. static assert(types::I64_MAX == 9223372036854775807,
  58. "Maximum integer value exceeds buffer length");
  59. static let s = struct {
  60. l: size = 0,
  61. b: [22]u8 = [0: u8...], /* 20 digits plus NUL and '-' */
  62. };
  63. s.l = 0;
  64. s.b = [0: u8...];
  65. const isneg = i < 0;
  66. if (isneg) {
  67. s.b[s.l] = '-': u8;
  68. s.l += 1;
  69. i = -i;
  70. } else if (i == 0) {
  71. s.b[s.l] = '0': u8;
  72. s.l += 1;
  73. };
  74. while (i > 0) {
  75. s.b[s.l] = '0': u8 + (i % 10): u8;
  76. s.l += 1;
  77. i /= 10;
  78. };
  79. const x: size = if (isneg) 1 else 0;
  80. bytes::reverse(s.b[x..s.l]);
  81. s.b[s.l] = 0: u8;
  82. return &s: *str;
  83. };
  84. </pre>
  85. </details>