[Ur] Collecting Ur/Web examples

Adam Chlipala adamc at csail.mit.edu
Wed May 7 08:37:58 EDT 2014


On 05/07/2014 05:17 AM, Sergey Mironov wrote:
> Hi! I use UrWeb as a part of build-server engine. The server will be
> used to build and deploy a firmware updates to network routers. In
> more details, It's task is to 1) authenticate user 2) Figure out
> whether they need a software update by comparing effective firmware
> version against the latest one 3) Launch the build process if needed
> and store the firmware path to a database 4) Serve the firmware which
> is a ~20M encrypted tarball.
>
> The project as a whole is a closed source project, but I think I'll be
> allowed to officially open the UrWeb part.

Sounds like a fun example to be able to cite!  I'll be grateful if you 
can indeed release the Ur/Web part open-source in the next month or so.

> I've checked the urweb-callback against the new version of the UrWeb.
> Unfortunately, urweb-callback fails to pass the stress test with your
> version of uw_commit. The symptom is a 'job leak' - several jobs are
> not freed at the end of the test. At first glance your version is
> quite similar to mine, but probably there is a critical difference
> hiding somewhere.  I'll try to figure out what is going on.

Thanks!  I can also look at it again (though maybe not right away), 
which is easier if I have a representative part of your code.

> I also thought about potential application of the UrWeb in embedded
> web applications. The strong memory guarantees and C output of the
> compiler make it possible to compile the good server for ARM cpus
> which is a big advantage comparing to Haskell and Lisp frameworks.
> (I've read that Haskell works for arm nowdays) I wish I have some time
> to build a demo project for RaspberryPI or other popular arm board.

I don't know if anyone has built Ur/Web servers for ARM, but I can't 
think of any reason why it wouldn't work right away.  If there are 
issues, they're probably easy to fix.  Certainly Ur/Web is used 
regularly with both 32-bit and 64-bit x86.

> The important thing here is the database. Postgres and MySql are often
> too heavy choice for such applications so the sqlite may probably be a
> backend of choice. We may need to improve the sqlite compatibility in
> order to go embedded.

I'm not aware of any SQLite incompatibility, but there may also have 
been less testing with this backend than with the others.



More information about the Ur mailing list