logo

drewdevault.com

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

Status-update-April-2022.md (5056B)


  1. ---
  2. title: Status update, April 2022
  3. date: 2022-04-15
  4. ---
  5. This month marked my first time filing taxes in two countries, and I can assure
  6. you it is the worst. I am now a single-issue voter in the US: stop taxing
  7. expats! You can get some insight into the financials of SourceHut in the
  8. recently-published [financial report]. But let's get right into the fun stuff:
  9. free software development news.
  10. [financial report]: https://sourcehut.org/blog/2022-04-08-2021-financial-report/
  11. There was some slowdown from me this month thanks to all of the business and
  12. financial crap I had to put up with, but I was able to get some cool stuff done
  13. and many other contributors have been keeping things moving. I'll start by
  14. introducing a new/old project: Himitsu.
  15. Essentially, Himitsu is a secret storage system whose intended use-case is to
  16. provide features like password storage and SSH agent functionality. It draws
  17. much of its inspiration from Plan 9's Factotum. You may have stumbled upon an
  18. [early prototype][0] on git.sr.ht which introduces the basic idea and included
  19. the start of an implementation in C. Ultimately I shelved this project for want
  20. of a better programming language to implement it with, and then I made a better
  21. programming language to implement it with. Over the past two weeks, I have
  22. implemented something similar to where the C codebase was left, in fewer than
  23. half the lines of code and much less than half the time. Here's a little peek at
  24. what works now:
  25. [0]: https://git.sr.ht/~sircmpwn/himitsu.old
  26. ```
  27. [12:18:31] taiga ~/s/himitsu $ ./himitsud
  28. Please enter your passphrase to unlock the keyring:
  29. [2022-04-15 12:18:56] himitsud running
  30. ^Z[1]+ Stopped ./himitsud
  31. [12:18:57] taiga ~/s/himitsu $ bg
  32. [1] ./himitsud
  33. [12:18:58] taiga ~/s/himitsu $ nc -U ~/.local/state/himitsu/socket
  34. add proto=imap host=example.org user=sir@cmpwn.com password!="Hello world!"
  35. ^C
  36. [12:19:12] taiga ~/s/himitsu $ ls ~/.local/share/himitsu/
  37. 2849c1d5-61b3-4803-98cf-fc57fe5f69a6 index key
  38. [12:19:14] taiga ~/s/himitsu $ cat ~/.local/share/himitsu/index
  39. YNfVlkORDX1GmXIfL8vOiiTgBJKh47biFsUaKrqzfMP2xfD4B9/lqSl2Y9OtIpVcYzrNjBBZOxcO81vNQdgnvxQ+xaCKaVpQS4Dh6DyaY0/lpq6rfowTY5GwcI155KkmTI4z1ABOVkL4z4XDsQ2DEiqClcQE5/+CxsQ/U/u9DthLJRjrjw==
  40. [12:19:19] taiga ~/s/himitsu $ fg
  41. ./himitsud
  42. ^C[2022-04-15 12:19:22] himitsud terminated
  43. [12:19:22] taiga ~/s/himitsu $ ./himitsud
  44. Please enter your passphrase to unlock the keyring:
  45. Loaded key proto=imap host=example.org user=sir@cmpwn.com password!=2849c1d5-61b3-4803-98cf-fc57fe5f69a6
  46. [2022-04-15 12:19:29] himitsud running
  47. ^C[2022-04-15 12:19:31] himitsud terminated
  48. [12:19:33] taiga ~/s/himitsu $ find . -type f | xargs wc -l | tail -n1
  49. 895 total
  50. ```
  51. This project is progressing quite fast and I hope to have it working for some
  52. basic use-cases soon. I'll do a dedicated blog post explaining how it works and
  53. why it's important later on, though it will remain mostly under wraps until the
  54. language is released.
  55. Speaking of the language, there were a number of exciting developments this
  56. month. Two major standard library initiatives were merged: regex and datetime.
  57. The regex implementation is simple, small, and fast, targeting POSIX ERE as a
  58. reasonably sane conservative baseline regex dialect. The datetime implementation
  59. is quite interesting as well, and it provides a pretty comprehensive API which
  60. should address almost all use-cases for timekeeping in our language with a
  61. robust and easy-to-use API. As a bonus, and a little flex at how robust our
  62. design is, we've included support for Martian time. I'm very pleased with how
  63. both of these turned out.
  64. ```hare
  65. use datetime;
  66. use fmt;
  67. use os;
  68. use time::chrono;
  69. export fn main() void = {
  70. const now = datetime::in(chrono::MTC, datetime::now());
  71. fmt::printf("Current Martian coordinated time: ")!;
  72. datetime::format(os::stdout, datetime::STAMP, &now)!;
  73. fmt::println()!;
  74. };
  75. ```
  76. Other recent improvements include support for signal handling, glob, aes-ni, and
  77. net::uri. Work has slowed down on cryptography — please get in touch if
  78. you'd like to help. Many readers will be happy to know that there are rumblings
  79. about possibly going public soon; after a couple more milestones we'll be having
  80. a meeting to nail down the most urgent priorities before going public and then
  81. we'll get this language into your hands to play with.
  82. I also started a bittorrent daemon in this language, but it's temporarily
  83. blocked until we sort out HTTP/TLS. So, moving right along: SourceHut news?
  84. Naturally I will leave most of it for the "what's cooking" post, but I'll offer
  85. you a little tease of what we've been working on: GraphQL. We landed support
  86. this month for GraphQL-native webhooks in todo.sr.ht, as well as some new
  87. improvements to the pages.sr.ht GQL API. hg.sr.ht is also now starting to see
  88. some polish put on its GraphQL support, and some research is underway on GraphQL
  89. Federation. Very soon we will be able to put a bow on this work.
  90. That's all for today! Thanks again for reading and for your ongoing support. I
  91. appreciate you!