1. 1

    Rust’s linter, clippy, is now available on stable Rust. You can install it via rustup component add clippy and run it with cargo clippy.

    Does this mean we can install clippy using cargo install too? That’d be great.

    1. 1

      I used to do that … but the compiler APIs would change here and there, so I ended up switching to the rustup managed component once that was available as a preview. It has been great.

      Why would you want to keep using cargo install?

      1. 2

        I use a tier 3 platform, so there is no rustup.

    1. 3
      • Working on some stuff for a client to try to wrap things up before I leave for a 3 week winter holiday.
      • My wife and I are taking daughter to a birthday party, but it is very hot here (35C today).
      • Reading up on some alternative ideas to what a browser is (like Project Atlantis from Mickens while at MSR).
      • Doing an experiment with epoxy resin and fiber optics to conduct light into a thin film of resin to see if I can get the result that I want.
      • Having guests over on Sunday to make some home made Christmas cards with my wife and daughter.
      • Submitting more of my backlog of changes to the Zircon kernel from Fuchsia. This is mostly typo corrections, but also working on some changes to what permissions are checked at what times.
      • Working on more Z3 changes to upstream to clean some stuff up in terms of platform support.
      • Extending my Rust Z3 bindings.
      • Reading some fiction.

      And probably some other things here and there …

      1. 4

        Hello and hope you all had a great week.

        I’m still working on improving my Z3 bindings (https://github.com/prove-rs/z3.rs), but I’ve found a bunch of things that needed to be improved upstream in the main Z3 repository (https://github.com/Z3Prover/z3). I’ve got a long list of things now that should be improved in the Z3 implementation.

        If anyone knows of an organization that is using Z3 and would like to sponsor some upstream maintenance, I’d love to talk. I’ve been doing this in my spare time, but there’s a ton of things that need to be done and Z3 is so foundational to so much of what’s going on in some fields these days.

        I also updated the Rust bindings for Harfbuzz to the most recent release of Harfbuzz.

        I’m also continuing to get some things upstreamed into Zircon, the microkernel powering Fuchsia.

        Apart from all of that … I’ve been learning about making translucent wood, translucent concrete, and research into various wood-based materials that are pretty interesting. I’m also reading up on techniques involving the impregnation of wood with sodium silicate.

        Oh, and I’m doing a lot of client work, but nothing much there to speak publicly about.

        1. 4


          Christmas holidays are approaching, and with that, a 3 week trip back to the US. So it is a great time to be working on wrapping up a lot of things for the year.

          For work, I’m getting my client updated to a new version of emscripten, switching to WebAssembly, simplifying their build process, and working on things to reduce the size of the generated code. A lot of good fun that spans C++, JS, cmake, WebAssembly, and more.

          Outside of that, I’ve been working again on my Z3 bindings for Rust: https://github.com/prove-rs/z3.rs

          As part of that, I’ve also been submitting a number of improvements upstream and into the main Z3 repository. A big focus of that has been improving the documentation, both for the C API and for the Rust bindings. I’ve also been continuing a process that I started a while ago of having Z3 switch away from a custom Z3_bool type over to bool from stdbool.h … the actual change had already happened, but Z3_bool and Z3_TRUE / Z3_FALSE were still around. They’re almost entirely gone now though!

          I’ve been continuing to submit some improvements upstream to Zircon and am slowly working on my Vega-Lite Rust bindings.

          1. 11

            I want to use Vega-Lite from Rust, so I took the JSON schema and used QuickType to generate some Rust code. It ends up that this has a lot of issues, but it is a good start, so I’m now working on cleaning this up some. I also have generated code for Vega in a sibling repository. Any help on my vega-lite.rs repo or the vega.rs would be greatly appreciated.

            I’ve been playing with Zircon, the microkernel at the heart of Fuchsia some. I’ve been submitting a lot of typo fixes for comments and documentation as I browse through things. I’m thinking about picking up a Khadas VIM2 board to run it on actual hardware … perhaps after Christmas. (And by then, perhaps a Khadas Edge will be viable?)

            My daughter spent some time this last weekend with some Japanese families to play, and while I talked with some of the mothers, the idea of laser cut nori came up. This too will probably become a project for after Christmas though.

            1. 1

              I’d love to hear more about your adventures in Fuchsia! It’s something that fascinates me but I have zero confidence in my ability to make it build and run from git.

              1. 2

                A few things then:

                • I mainly build and run Zircon rather than full Fuchsia. I’m more interested in what can be built on a lightweight kernel at the moment.
                • I have looked at the Garnet layer some which adds more stuff but isn’t yet full Fuchsia.
                • Fuchsia requires Vulkan to do graphics, so that currently means no graphics under things like qemu and the like.
                • I’d have to buy a board like the Khadas VIM2 to get supported graphics hardware to play with that part of Fuchsia, which I haven’t done yet.

                But let it be said that Zircon (and previously Fuchsia when I built it) are the easiest OSes that I’ve run into to build from scratch on macOS. SeL4 is a pain (and has no real path towards hardware graphics support).

                I’m excited to keep playing … and figure that it’ll be something that I do over the next year.

            1. 6

              I’ve been staying busy in Rust land.

              I recently took over maintenance of the z3-sys and z3 crates from Graydon and have been working on them. I’ve published a new version of z3-sysand I’m working on updating the z3 crate. (Repo.)

              I’ve published a long overdue update to my lldb-sys crate that brings is close to being up to date, and this week, I’ll update the lldb crate for the newly bound features. (Repos: lldb, lldb-sys.)

              I’m slowly working on some RDF-related stuff as well as Linked Data, but not sure what I’ll get done this week on that yet.

              The final thing for this week is that I’m writing something to use some code borrowed from serde-json to provide serialization / deserialization between Rust and JavaScriptCore. I maintain bindings for javascriptcore-sys and javascriptcore and would find it useful to use serde to translate values back and forth.

              1. 1

                I was hoping that meant the Z3 solver. Is it currently getting use for anything? And, if on program verification, have you or anyone else thought of a Why3/WhyML port instead to leverage multiple solvers plus any work done directly in Why3? It’s got a nice, little ecosystem going. Frama-C and SPARK Ada use it.

                1. 2

                  They are bindings for the Z3 solver. I’ve used Z3 for stuff in the past and wanted to have good bindings for it in Rust. I don’t use it for program verification though myself!

              1. 6

                The W3C has never been in a position to block DRM.

                DRM could be blocked by convincing media companies that they don’t need it, by convincing browser vendors to reject it, or by convincing consumers to boycott it. The W3C’s blessing (or lack thereof) is completely irrelevant to all of these parties.

                1. 14

                  W3C has been irrelevant since they abdicated progressing web standards. in useful directions.

                  DRM was the absolute last thing we as devs and users needed.

                  Vast javascript libraries is NOT what we needed.

                  Personally, viewing the web landscape today… I think EFF did the right thing.

                  Ignore W3C and find an organization that actually wants to make the web a better place.

                  1. 6


                    1. 2

                      One issue that complicates this is the W3C’s copyright policy for their specifications: https://www.w3.org/Consortium/Legal/2015/doc-license

                  2. 6

                    TBH the whole W3C debate and protest over DRM was a boondoggle.

                    The three largest browser makers are all pro-DRM, and Mozilla is mostly funded by pro-DRM companies. W3C approval or not, web DRM was going to be implemented and rolled out. The only question was whether it would be standardized or if each browser would implement their own.

                    Like it or not, the internet is just a revenue source these days.

                    1. 10

                      If each browser required its own DRM implementation, using DRM would become more expensive and challenging, which is the goal.

                      Why are people trying to save the DRM companies money? Standardization isn’t a goal in and of itself. You wouldn’t want to standardize malware APIs (although arguably that’s what W3C is doing) or JS APIs designed to help pop-up ads.

                      1. 3

                        If each browser required its own DRM implementation, using DRM would become more expensive and challenging, which is the goal.

                        You fundamentally misunderstand the role of standards bodies.

                        If the W3C had rejected EME…all of the browsers would have gone ahead and continued to use the EME standard they’d all already agreed upon and implemented. All that would be happening would be that the W3C had stuck its head in the sand and chosen to pretend a standard that existed in practice did not exist, because they didn’t like it.

                        Standards bodies exist to help facilitate coordination between the browser vendors. Standards bodies are only useful insofar as they facilitate that coordination. Standards bodies have zero power to force browser vendors to do, or not do, anything. If standards bodies cease to be useful for coordination purposes, they will be ignored and replaced by a new body that the vendors can actually cooperate through.

                        There was no universe in which the W3C could force browser vendors to not implement EME, or all do their own thing. The only choice was “acknowledge the existence of EME” or “stick head in sand and become irrelevant”.

                        1. 2

                          The browsers didn’t require W3C to approve EME to implement it. They implemented it long before it was approved. A ‘no’ vote would not have made anything more expensive or challenging.

                          1. 1

                            If each browser required its own DRM implementation, using DRM would become more expensive and challenging, which is the goal.

                            That’s not the goal, and that premise doesn’t hold anyway.

                            The expenses around this are pocket change for Microsoft, Google, and Apple, and not having a standard means they SAVE money because they can use their existing DRM. They’d cross license each other’s DRM, and they’d all be compatible.

                            The people hurt by not having a standard would be people developing new browsers. They’d have to implement multiple DRM technologies, instead of just one.

                            I don’t like DRM, but it’s not going away, so it might as well be dealt with in a sane way.

                          2. 3

                            I totally agree. To me, this seems like throwing the baby out with the bathwater. So, the EFF has abdicated its right to advocate for digital privacy rights as part of the W3C?

                            I realize that sometimes groups like the EFF need to make a stand, I’m just not sure this is the best way to achieve what they’re looking for, or whether this is the right hill to die on, so to speak.

                            1. 2

                              I don’t think it’s just a revenue source, because non profits use it well. It is built for companies and organizations, because it is a client-server model and running servers takes money, initiative, and persistence.

                              What I am always a bit confused about is: if the internet isn’t good enough, you are necessarily missing (small $) money, initiative, or persistence, but then why is your goal worth anything? Those are all reasonable signals for social usefulness.

                              Thus, distributed/“libre” networks inherently have little value. You’ll know you’re doing something useful when a few other people are willing to help foot the aws bill.

                              1. 11

                                You’ll know you’re doing something useful when a few other people are willing to help foot the aws bill.

                                I respectfully disagree.

                                When I was younger, I enjoyed learning about things on all manner of odd private websites. To this day, when I’m feeling down, reading webcomics (many of which lack advertising!) cheers me up. Flipping through archives of essays and memos hosted by people gratis has taught me much.

                                If I can help give back in that same way by hosting content myself (even silly things like my own blog), then I believe that I have done something useful–quite without consideration for profitability.

                            2. 5

                              There’s a difference between blocking DRM and refusing to support DRM.

                              It’s not a pointless moral play. Refusing to standardize malware APIs makes it more expensive and inconvenient to write malware, even if it’s probably going to happen anyway.

                            1. 1

                              It would be interesting to see how this compares with glm in terms of generated code and breadth of API.

                              1. 6


                                I’m working on my LLDB bindings for Rust more. I’ve been extending them with more coverage of SBType, SBValue and related APIs.

                                I also added experimental GraphQL support so that I can query debugger state with a GraphQL query. I’m not entirely happy with this for a variety of reasons, mainly related to how I hope to use such a capability in the future, so I’m thinking about what to do. I’m considering that perhaps something like the Gremlin API from Tinkerpop might be interesting as that would let me support GraphQL and SPARQL and so on from a common architecture. I don’t know!

                                I’ve been digging into WebRender some more. As of today, I have the ability to (poorly) render text. Positioning and layout aren’t right as that’s something that I must bring to the table, but I’ve done that in the past on other projects and there’s plenty of code out there to help with that.

                                I’d love to talk with people interested in UI stuff in Rust. I’ve got an early design and a small group of people that I’m discussing it with … and have been starting to build out pieces over the last couple of weeks.

                                1. 4

                                  Hello everyone!

                                  I’ve been learning about WebRender and started to make some pull requests. I’ve done a couple of documentation improvements and got a minor API change accepted that makes an important part of the API easier to understand.

                                  Learning WebRender has been a good bit of fun and it seems pretty promising. (I’m not interested in using it as part of Servo…)

                                  I’m still working on my JavaScriptCore and LLDB bindings for Rust, as well as the digitization of the 1939 book on butterflies in British India.

                                  My daughter (6yo) has a 2.5 week break between terms at school, so the next couple of weeks will be interesting.

                                  Have a good week!

                                  1. 5

                                    Hello again!

                                    Hope that you’ve all had a good week since last week.

                                    I’m working on a couple of different things in typical programming land …

                                    As some of you know, I have an interest in photographing insects, lizards and other creatures, which I post a lot on Instagram. This weekend, I got a great capture of a jewel bug and had a small photo shoot with it. Also got a praying mantis last week that was wearing a hat made of sticky seeds. I also observed and photographed a wild bee nest and learned about blue-banded bees (which perform buzz pollination).

                                    Well, along that line of thought, I’ve taken an OCR of a book from 1939 about lepidoptera (butterflies, moths) that is in the public domain and am cleaning up the output and converting it into ReStructuredText (for now). I’m hoping to make a lot of progress on that this week. This will probably lead to a blog post or two about some interesting issues that arise in digitizing this sort of material and presenting it to readers.

                                    Have a great week!

                                    1. 6

                                      It has been a long while since I’ve posted here … or much of anywhere.

                                      Just got back from spending a 4 day weekend living in a cabin at a zoo with an educational group here in Thailand. I love getting to hear the sounds of gibbons. I also got to see my first water dragon in the wild, which was really cool.

                                      I just published a pair of crates for Rust bindings for WebKit’s JavaScriptCore. There’s a bunch to do yet, including getting it going on platforms other than macOS. (Hopefully someone that I know will work on the Linux support soon.) There’s also work to be done to let someone expose their Rust code to the JavaScript environment.

                                      Along that note, I wonder what JavaScriptCore will do when it supports WebAssembly on iOS! Will it be able to interpret it or will there be some support for native compilation somehow (via separate processes or whatever)?

                                      I’ve also been posting a lot on Instagram and welcome new followers there, especially those who are interested in seeing insects and other creatures from Thailand and other places that I happen to be.

                                      As for this week … I am hoping that an oleander hawk moth that I raised from a caterpillar will finally emerge from its pupa form this week. I’ve been raising some caterpillars in a large container on my desk in my home office. It is fascinating to watch them progress and then release them.

                                      1. 1

                                        I’m really happy to see that this is using vega-lite!

                                        1. 19

                                          I use Rust as a daily driver for my hobby work. I also use TypeScript. This work is stuff that I hope to turn into some products in the future or use for building some products and it gets a lot more time from me than the label “hobby” would indicate.

                                          I like the type system. I definitely use the safety features. I like being able to make sure that I’m not doing useless copies of data as I parse it or otherwise work with it.

                                          Why am I not using something other than Rust? Well, I’m using Rust in the core of the libraries because I want:

                                          • Native, yet safe.
                                          • A C callable API so that it can be used from other languages.
                                          • Can be embedded into other software within the same process without pain, including on iOS and Android. (So JVM stuff is more difficult.)
                                          • Can be compiled to asm.js / webassembly so that I can also use these components in projects that must run within JS.
                                          • A better type system than C / C++.
                                          • Cargo and rustup.
                                          • Broad platform support.

                                          I’m also happy about the lack of libraries for some things. This means that there’s a chance to try to do a better job than some other ecosystems from the start. (For one thing that i’m working on there are several widely used and slightly different APIs in the Java world and an Apache Commons wrapper to try to unify them.)

                                          1. 5

                                            Error 403 on trying to view it.

                                            1. 1

                                              I can’t edit the orig link? should be http://i.imgur.com/GDP88Eq.png

                                            1. 3

                                              This is a positive direction in front end frameworks. I can see why it’s leveraging the popular “reactive” label, but it’s different enough to warrant a different name. It’s more of s simple dataflow-constraint variable nature, along the lines of ConstraintJS, Amulet, and Garnet. (All three from CMU.)

                                              Much more capable than the current ReactJS line of development. First glance looks like a lot of code… not sure why, maybe to fit in with all that JS, DOM, etc. A good step in the right direction though. Hopefully it will attract some attention.

                                              1. 2

                                                Speaking of Amulet …

                                                I’ve been crazy enough to get Amulet compiling and somewhat running again:


                                                I don’t know how much I plan to work on it … as doing this much was somewhat random and unplanned, but it has been fun.

                                                I started out doing it because while I’ve known about Amulet and Garnet for over 20 years at this point, I’ve not run them in about that long and thought that I would benefit from digging deeper.

                                                Contributions are welcome. There’s plenty to do as not everything works, etc.

                                              1. 7

                                                Morning all!

                                                I’m having a slower week due to travel again. This time, we are just driving around a bit in Thailand. This turned a bit problematic when our first car had a problem on the first day. We resolved this by getting our other car from home and resuming the trip. We’ll pick up the first car from a repair shop on the way home.

                                                We did get to see a fairly large Asian Water Monitor next to our room on Sunday morning.

                                                Apart from that, I’m still working on my initial implementation of some RDF stuff in Rust and am writing up a lot of documents about what I’m working on in the bigger picture … I’m looking forward to talking about that more publicly in the coming weeks.

                                                I’ve had someone working for me for the last week and that’s going well. I’m working on bringing on 2 others in the coming days.

                                                Enjoy your week!

                                                1. 7

                                                  I’m basically convinced you actually post from Jurassic Park.

                                                1. 5

                                                  Howdy all!

                                                  This is a pretty exciting week. Two people will start working for me part time this week on my Rust projects. It’ll be interesting to see how this goes and, if it goes well, I hope to be able to expand on this arrangement in the future.

                                                  I’ve continued my rapid pace of learning over the last week. Despite being in my 40s, I feel like I’m learning more per day now than at any time in a very long time. I’m almost at a point where I want to start diving into writing my RDF library and other things.

                                                  Around the house, while we were away recently, we had a large number of caterpillars come to live in some of our bushes. My wife wasn’t happy about this as she deeply dislikes caterpillars. But, a bright side is that a green billed malkoha (a type of non-parasitic cuckoo) has moved into the tree next to us and is enjoying many fine meals from our bushes. It is pretty fun to watch him hop back and forth along the fence, occasionally jumping down and coming back up with a caterpillar in his beak.

                                                  I’ve been sick for the last 5 days, but starting to feel better today, so hopefully I’ll be able to get a lot done this week.

                                                  I played a bit with Pixar’s Universal Scene Description last week. I submitted a fix to homebrew for one of the dependencies and got USD to mostly build locally. I’m waiting for them to process a CLA that I sent in so that I can submit some pull requests with various fixes.

                                                  Hope you all have a great week!

                                                  1. 1

                                                    Your RDF library sounds interesting. Is it for Rust? Any idea of specific features you plan for it?

                                                    1. 3

                                                      Yes, it is written in Rust.

                                                      My software plans require embeddable libraries that don’t require a server, can hopefully expose an API that is C compatible for use from other languages, and that can run in many places, from mobile to desktop to server. That’s why Rust.

                                                      As for the RDF library itself, I’m starting out with a library for XSD datatypes, one for CURIEs, and a base library for RDF models / graphs themselves. Over time, I’d like to expand this as I need query and other things.

                                                      I’d like to explore, in the future, ways to integrate native structs with this. I have some ideas like using an RDF model as a trait and let it generate the graph data on request, or perhaps integrating with serialization systems so that you reconstruct native Rust structs from the underlying graph data. I don’t know though yet what will work the best or make the most sense.

                                                      This all ties into a much larger set of projects that I want to build on top of all of this. It is my life’s work.

                                                      I welcome help.

                                                  1. 6

                                                    Howdy all.

                                                    I’m Bruce. I’m waywardmonkeys on GitHub. I’m an American expat living with my wife and a 5 year old daughter in Thailand. We like to travel a lot, at least a short trip every month or two and a couple of longer trips each year. I sort of ended up collecting cloth (silk, batik, and such) from all over SE Asia.

                                                    I teach math (but in a fun sense rather than arithmetic) to my daughter and one of her friends, teach her to read and try to answer the 9 million questions that she has each day.

                                                    I used to work on Dylan up until a couple of months ago when I switched over to using Rust in a big way.

                                                    I’m working on something new and big in Rust, but don’t have a concise way to describe it yet. It is sort of an environment centered around commands in the sense of the Common Lisp Interface Manager / CLIM and how Symbolics Genera worked on the Lisp Machines. The other side of it is centered around data that is described via RDF & OWL2. I’m basically having to write an entire new ecosystem of things in Rust to do this, but it ends up that with some of my requirements, I’d have to write a lot of new stuff no matter the language. This project is an outgrowth of everything that I’ve worked on in the last couple of years, and is based on the stuff I’ve spent the last 20 years learning about, using and thinking about. So I’m really excited.

                                                    1. 2

                                                      Wow, that sounds really exciting! Can’t wait to hear more about it.

                                                      Are you familiar with “Measurement” by Paul Lockhart? It is my favorite mathematics book, and is to me the best example of how to teach math effectively. Lockhart is most known for his essay “A Mathematician’s Lament,” and this book is basically him answering the major critique people had of that essay: “I’d like to see you do better.” Really excellent and engaging stuff that is not at all about memorizing theorems, but is instead about building up an ability to reason effectively about mathematical objects.

                                                      1. 2

                                                        Can you recommend any resources for teaching recreational math to kids? Mine love Vi Hart’s videos, and I’ve been looking for more in that vein, though really I doubt there is anyone quite like Vi in the world.

                                                        1. 4

                                                          I like some of the “Natural Math” stuff, but it is difficult sometimes since daughter and her friend are 5 years old (and we started when they were 3 and 4).

                                                          They like sudoku puzzles (4x4 and sometimes up to 6x6). We talked about reflection, iteration and so on by folding paper and making snowflakes. We also did some stuff with Sierpinski triangles. Since they couldn’t read at the time, we did some logic puzzles by talking through them. We’ve done a lot with sorting and comparing things and patterns. As part of that, we made some bracelets for their mothers with some beads by making patterns of 3 variables (size, color and shape).

                                                          Islamic art has been pretty fun too and provided a basis for talking about shapes, patterns, geometry (and improving motor skills!)

                                                          In the end though, I do a lot of reading and then we improvise a lot depending on how things are going. And I try not to push too hard and keep it fun and varied.

                                                      1. 5

                                                        Hello all!

                                                        This last week was settling back in after some time in Indonesia. This next week is about getting a whole lot of things done.

                                                        I did push out a new library, humanize.rs in the last couple of days. Right now, it only does bool, but I’ll be adding more to it in the coming days as I start to use it more.

                                                        I’ve been working out how to start handling RDF in Rust and hope to get started writing some more serious code in that area this week.