on master help sign in
Merge pull request #652 from urbit/mike-runtime-performance-jets

Mike runtime performance jets

commit6e89a46a7da6878f2560b27721a051c39cf078a4 authormikeosborne <mike@mikeosborne.co> dateMon 21 Jun 2021, 11:36 (5 years ago) parentc09f5cb63266a5
4 files changed+187
content/grants/apprenticeships/contacts.md+33 content/grants/bounties/json-jet.md+45 content/grants/bounties/nuck-jet.md+46 content/grants/bounties/slaw-scot-jets.md+63
content/grants/apprenticeships/contacts.mdnew file+33
@@ -0,0 +1,33 @@
1++++
2+title = "Apprenticeship: Contacts App"
3+date = 2021-06-17
4+[taxonomies]
5+grant_type = ["apprenticeships"]
6+grant_category = ["App Dev: Arvo"]
7+[extra]
8+image = ""
9+description = "Contact Management App"
10+reward = 1
11+mentor = "~timluc-miptev"
12+assignee = ""
13+completed = false
14+work_request_link = "https://airtable.com/shr4qt9t9kz7RaOIa?prefill_Grant+ID=B0034&prefill_Grant+Name=Contacts%20App"
15++++
16+
17+### Contacts App
18+
19+Urbit currently has ship metadata, but there is room for alternate products here. It would be useful to be able to attach arbitrary metadata to a user, both in textual format to describe them, graph-store links to materials they've written, automated lists of groups they're in, and programmatically-accessible metadata that can be used for filtering and permissioning.
20+
21+These contact lists could then be shared between ships as a way to jumpstart people into your social network. Alternate interfaces to chats could give read/write access to them. While it's unlikely that this exact product would be what people finally use, it would go a long way towards feeling out the user-metadata design space.
22+
23+This project would be great for someone who wanted to learn more about how Urbit data storage and sharing between apps works, as well as understanding how to interact with `graph-store`.
24+
25+### User Stories
26+
27+As a user I can:
28+* add text data to another user
29+* add permissions/markers to another user
30+* create a collection of `graph-store` links with data about the user
31+* automatically collect known groups the user is in
32+* search the user's written materials in `graph-store` (using `graph-query` or similar).
33+* share metadata about users with other ships, along with ways of merging it.
content/grants/bounties/json-jet.mdnew file+45
@@ -0,0 +1,45 @@
1++++
2+title = "JSON Parsing/Serializaiton Jet"
3+date = 2021-06-17
4+[taxonomies]
5+grant_type = ["bounties"]
6+grant_category = ["Core Dev"]
7+[extra]
8+image = ""
9+description = "Create high performance JSON parsing/serializing jet."
10+reward = 1
11+mentor = "~timluc-miptev"
12+assignee = ""
13+completed = false
14+work_request_link = "https://airtable.com/shr4qt9t9kz7RaOIa?prefill_Grant+ID=B0036&prefill_Grant+Name=JSON%20Parsing%2FSerialization%20Jet"
15++++
16+
17+## Jet JSON Parsing/Serialization
18+
19+We need to generally speed up common parsing and serialization operations. A large part of Urbit's UX is sending data in and out of Urbit for display in the UI, and the functions inside Urbit that handle this are all significant performance bottlenecks.
20+
21+Urbit serializes JSON frequently when sending data to various frontends, and this would make that much more rapid.
22+
23+Completing this bounty will have an immediate impact on the perceived speed of the system in frontends like Landscape.
24+
25+### Code
26+
27+* https://github.com/urbit/urbit/blob/master/pkg/arvo/sys/zuse.hoon#L3263
28+* https://github.com/urbit/urbit/blob/master/pkg/arvo/sys/zuse.hoon#L3320
29+
30+### Requirements
31+
32+* Knowledge of C
33+* Experience memory profiling to prevent leaks
34+* Hoon knowledge nice but not necessary
35+
36+### Resources
37+
38+* Tlon engineer explanation/assistance as needed
39+* Check-in with a Foundation director as needed
40+
41+## Milestone: Completion, 1 star
42+- jet is implemented and passes all tests
43+- Tlon engineer gives final approval on merging jet into core
44+
45+
content/grants/bounties/nuck-jet.mdnew file+46
@@ -0,0 +1,46 @@
1++++
2+title = "Nuck Jet"
3+date = 2021-06-17
4+[taxonomies]
5+grant_type = ["bounties"]
6+grant_category = ["Core Dev"]
7+[extra]
8+image = ""
9+description = "Create new high performance string parser jet."
10+reward = 1
11+mentor = "~timluc-miptev"
12+assignee = ""
13+completed = false
14+work_request_link = "https://airtable.com/shr4qt9t9kz7RaOIa?prefill_Grant+ID=B0035&prefill_Grant+Name=Nuck%20Jet"
15++++
16+
17+## jet +nuck
18+We need to generally speed up common parsing and serialization operations. A large part of Urbit's UX is sending data in and out of Urbit for display in the UI, and the functions inside Urbit that handle this are all significant performance bottlenecks.
19+
20+This is a function that parses strings and returns a `@ta` of their aura along with their atom value. This is invoked every time a scry happens, and currently takes 7ms for invocation, so there is potential for large performance gains.
21+
22+Completing this bounty will have an immediate impact on the perceived speed of the system in frontends like Landscape.
23+
24+### Examples
25+Note the `~.p` and `~.ux`--those are the auras.
26+```
27+> (scan "~pillyt" nuck:so)
28+[% p=[p=~.p q=32.819]]
29+> (scan "0x12" nuck:so)
30+[% p=[p=~.ux q=18]]
31+```
32+### Code
33+https://github.com/urbit/urbit/blob/master/pkg/arvo/sys/hoon.hoon#L5767
34+
35+### Requirements
36+* Knowledge of C
37+* Experience memory profiling to prevent leaks
38+* Hoon knowledge nice but not necessary
39+
40+### Resources
41+* Tlon engineer explanation/assistance as needed
42+* Check-in with a Foundation director as needed
43+
44+## Milestone: Completion, 1 star
45+- jet is implemented and passes all tests
46+- Tlon engineer gives final approval on merging jet into core
content/grants/bounties/slaw-scot-jets.mdnew file+63
@@ -0,0 +1,63 @@
1++++
2+title = "Tune slaw/scot Jets"
3+date = 2021-06-17
4+[taxonomies]
5+grant_type = ["bounties"]
6+grant_category = ["Core Dev"]
7+[extra]
8+image = ""
9+description = "Tune slaw/scot jets for better perfomance."
10+reward = 1
11+mentor = "~timluc-miptev"
12+assignee = ""
13+completed = false
14+work_request_link = "https://airtable.com/shr4qt9t9kz7RaOIa?prefill_Grant+ID=B0037&prefill_Grant+Name=Tune%20slaw%2Fscot%20jets"
15++++
16+
17+## slaw/scot
18+
19+We need to generally speed up common parsing and serialization operations. A large part of Urbit's UX is sending data in and out of Urbit for display in the UI, and the functions inside Urbit that handle this are all significant performance bottlenecks.
20+
21+`slaw` parses strings to atoms, and `scot` serializes atoms to strings. They both are used heavily throughout the codebase.
22+
23+Completing this bounty will have an immediate impact on the perceived speed of the system in frontends like Landscape.
24+
25+### Examples
26+slaw
27+```
28+> `(unit @p)`(slaw %p '~pillyt')
29+[~ ~pillyt]
30+> `(unit @p)`(slaw %p '~pillam')
31+~
32+> `(unit @ux)`(slaw %ux '0x12')
33+[~ 0x12]
34+> `(unit @ux)`(slaw %ux '0b10')
35+```
36+
37+scot
38+```
39+> `@t`(scot %p ~pillyt)
40+'~pillyt'
41+> (scot %ux 0x12)
42+~.0x12
43+```
44+
45+### Code
46+
47+* slaw https://github.com/urbit/urbit/blob/master/pkg/arvo/sys/hoon.hoon#L5913
48+* scot https://github.com/urbit/urbit/blob/master/pkg/arvo/sys/hoon.hoon#L5905
49+
50+### Requirements
51+
52+* Knowledge of C
53+* Experience memory profiling to prevent leaks
54+* Hoon knowledge nice but not necessary
55+
56+### Resources
57+
58+* Tlon engineer explanation/assistance as needed
59+* Check-in with a Foundation director as needed
60+
61+## Milestone: Completion, 1 star
62+- jet is implemented and passes all tests
63+- Tlon engineer gives final approval on merging jet into core