{"payload":{"feedbackUrl":"https://github.com/orgs/community/discussions/53140","repo":{"id":11662224,"defaultBranch":"master","name":"rdl","ownerLogin":"tupl-tufts","currentUserCanPush":false,"isFork":false,"isEmpty":false,"createdAt":"2013-07-25T14:14:24.000Z","ownerAvatar":"https://github.com/avatars/u/50967692?v=4","public":true,"private":false,"isOrgOwned":true},"refInfo":{"name":"","listCacheKey":"v0:1710434253.0","currentOid":""},"activityList":{"items":[{"before":"bcf8e75dd443d9b27b1d2b4a72fc3faf42359cee","after":"1039ebf9c6154045fff8b70b8f283be87c4ce41b","ref":"refs/heads/rest-backend-v1","pushedAt":"2024-09-16T21:43:42.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"mwaldrich","name":null,"path":"/mwaldrich","primaryAvatarUrl":"https://github.com/avatars/u/30734086?s=80&v=4"},"commit":{"message":"Another big path-sensitive update\n1. `Path` API has changed. `Path` is now the interface, not able to be instantiated. We then have `PathTrue` (the true path), `PathFalse` (never executed/dead code), `PathCondition` (a single type test/if stmt), `PathAnd`, `PathOr`, and `PathNot`. This means that joining two paths together is no longer `p1.join(p2)`, it's `PathAnd.new([p1, p2])`.\n2. Added `RDL::Config.boolean_algebra` mode, which enables applying some simple boolean algebra rules when combining paths via And, Or, and Not.\n3. The `PathType` API has changed. It now holds three fields: `condition: Path`, `when_true: Type`, and `when_false: Type`.","shortMessageHtmlLink":"Another big path-sensitive update"}},{"before":"902521c322886373df218d991691967f99c78837","after":"bcf8e75dd443d9b27b1d2b4a72fc3faf42359cee","ref":"refs/heads/rest-backend-v1","pushedAt":"2024-09-04T20:04:00.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"mwaldrich","name":null,"path":"/mwaldrich","primaryAvatarUrl":"https://github.com/avatars/u/30734086?s=80&v=4"},"commit":{"message":"can now extract_var_sol hash_param_key/val; render json: Hash","shortMessageHtmlLink":"can now extract_var_sol hash_param_key/val; render json: Hash<k, v>"}},{"before":"84fe36df15c2f68db49823ebad43840a6fa2f7fa","after":"902521c322886373df218d991691967f99c78837","ref":"refs/heads/rest-backend-v1","pushedAt":"2024-05-16T18:21:25.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"mwaldrich","name":null,"path":"/mwaldrich","primaryAvatarUrl":"https://github.com/avatars/u/30734086?s=80&v=4"},"commit":{"message":"Mega Path-Sensitive Update\n\nFollowing a couple months of work.\n\n# Redefined `Path` object\n- `Path` object now holds an `Array`\n- `Path` can determine if it's satisfiable or not\n- `Path` objects can be joined\n- `Path` is hashable, meaning it can be used as a key in hash maps. This solved several bugs since MultiTypes and PathTypes use `Path` as a hash key.\n\n# OpenAPI/Rails\n- Model detection (i.e. is a class an ActiveRecord model?) is more accurate and less buggy\n\n# Heuristics\n- MultiType extraction is now a heuristic\n- Heuristics are tried for ALL type variables\n - Bugs were fixed so all heuristics are compatible with all type variables. They may not yield a type, but they won't crash.\n- `init_meth_to_cls` performance gains\n - At least 10x faster in my testing\n\n# Typechecking/Inference\n- Bug fixed for case statement `else` branches\n- Path-sensitive types are now supported in the receiver position of a method call\n- MultiTypes are not allowed to be nested. Instead, their maps are merged, and unsatisfiable paths are pruned.\n- Path-sensitive subtyping rules are implemented (roughly) according to the formalism\n- Bug fix: fixed a crash that occurred during FHT promotion in certain circumstances\n- Constraint resolution is now path-sensitive. Paths are joined when bounds are propaogated. If an unsatisfiable path is created, that bound will stop propagating. multiTypes and PathTypes are treated as their own individual bounds.\n- Constraint resolution: upper and lower bounds propagation were not in parity. This should be fixed now.\n\n# Comp Types\n- `render` comp type handles more cases: rendering hashes, empty hashes, type variables, and plural associations are now supported.\n\n# Testing\n- I added some tests. they probably don't pass. We don't currently have a way to parse/write path-sensitive types.","shortMessageHtmlLink":"Mega Path-Sensitive Update"}},{"before":"57fadd0640e6001a41c98531935f8eb2316076b6","after":"84fe36df15c2f68db49823ebad43840a6fa2f7fa","ref":"refs/heads/rest-backend-v1","pushedAt":"2024-05-16T17:54:40.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"mwaldrich","name":null,"path":"/mwaldrich","primaryAvatarUrl":"https://github.com/avatars/u/30734086?s=80&v=4"},"commit":{"message":"Added comp type suspension. This completely replaces SFI (strict field inference)","shortMessageHtmlLink":"Added comp type suspension. This completely replaces SFI (strict fiel…"}},{"before":"b5e93e0cad00060f432b4dd6be5ae510886d52d8","after":"57fadd0640e6001a41c98531935f8eb2316076b6","ref":"refs/heads/rest-backend-v1","pushedAt":"2024-05-16T17:18:11.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"mwaldrich","name":null,"path":"/mwaldrich","primaryAvatarUrl":"https://github.com/avatars/u/30734086?s=80&v=4"},"commit":{"message":"Fix `type parameters not defined for Array` bug\n\nthis was triggering in about 1/10 runs. very annoying. the issue stems from the fact that the core types are `require`'d in a random order.","shortMessageHtmlLink":"Fix type parameters not defined for Array bug"}},{"before":"b80dbf4e1b00e90f2a89b0ce665a8baa8d93e7bd","after":"b5e93e0cad00060f432b4dd6be5ae510886d52d8","ref":"refs/heads/rest-backend-v1","pushedAt":"2024-05-16T17:16:02.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"mwaldrich","name":null,"path":"/mwaldrich","primaryAvatarUrl":"https://github.com/avatars/u/30734086?s=80&v=4"},"commit":{"message":"Logging changes\n\n- Removed all `puts`\n- Removed some commented code\n- Removed `awesome_print` dependency\n- All logs use RDL's logging system","shortMessageHtmlLink":"Logging changes"}},{"before":"6165626c98bc871f9623c18c599f10a15b9964f8","after":"b80dbf4e1b00e90f2a89b0ce665a8baa8d93e7bd","ref":"refs/heads/rest-backend-v1","pushedAt":"2024-03-22T18:22:23.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"mwaldrich","name":null,"path":"/mwaldrich","primaryAvatarUrl":"https://github.com/avatars/u/30734086?s=80&v=4"},"commit":{"message":"add `path_sensitive` flag to `leq`; extract_var_sol naive + heuristic","shortMessageHtmlLink":"add path_sensitive flag to leq; extract_var_sol naive + heuristic"}},{"before":"0a0e548281ea898026bba1524e539c46e801da29","after":"6165626c98bc871f9623c18c599f10a15b9964f8","ref":"refs/heads/rest-backend-v1","pushedAt":"2024-03-14T16:41:17.000Z","pushType":"push","commitsCount":3,"pusher":{"login":"mwaldrich","name":null,"path":"/mwaldrich","primaryAvatarUrl":"https://github.com/avatars/u/30734086?s=80&v=4"},"commit":{"message":"leq indexes multitypes","shortMessageHtmlLink":"leq indexes multitypes"}},{"before":null,"after":"0a0e548281ea898026bba1524e539c46e801da29","ref":"refs/heads/rest-backend-v1","pushedAt":"2024-03-14T16:37:33.000Z","pushType":"branch_creation","commitsCount":0,"pusher":{"login":"mwaldrich","name":null,"path":"/mwaldrich","primaryAvatarUrl":"https://github.com/avatars/u/30734086?s=80&v=4"},"commit":{"message":"Type Variables now record paths.","shortMessageHtmlLink":"Type Variables now record paths."}},{"before":"fe209aa8694c000fb7a07731dcebc2aed645e3ac","after":"0a0e548281ea898026bba1524e539c46e801da29","ref":"refs/heads/rest","pushedAt":"2024-03-11T15:52:29.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"mwaldrich","name":null,"path":"/mwaldrich","primaryAvatarUrl":"https://github.com/avatars/u/30734086?s=80&v=4"},"commit":{"message":"Type Variables now record paths.","shortMessageHtmlLink":"Type Variables now record paths."}},{"before":"6ca52c961ae2d4cbde62e96196d03d62eb194fe5","after":"fe209aa8694c000fb7a07731dcebc2aed645e3ac","ref":"refs/heads/rest","pushedAt":"2024-03-11T15:26:22.000Z","pushType":"push","commitsCount":3,"pusher":{"login":"mwaldrich","name":null,"path":"/mwaldrich","primaryAvatarUrl":"https://github.com/avatars/u/30734086?s=80&v=4"},"commit":{"message":"better comments","shortMessageHtmlLink":"better comments"}},{"before":"e66a71fb12cccada84d88f4085e07c882bbd456b","after":"6ca52c961ae2d4cbde62e96196d03d62eb194fe5","ref":"refs/heads/rest","pushedAt":"2024-03-11T14:44:33.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"mwaldrich","name":null,"path":"/mwaldrich","primaryAvatarUrl":"https://github.com/avatars/u/30734086?s=80&v=4"},"commit":{"message":"quick bug fix for method with no args but has parentheses ()","shortMessageHtmlLink":"quick bug fix for method with no args but has parentheses ()"}},{"before":"35caddc5b5fe3694b3547391bfa0059e16b58e21","after":"e66a71fb12cccada84d88f4085e07c882bbd456b","ref":"refs/heads/rest","pushedAt":"2024-01-29T20:01:03.000Z","pushType":"push","commitsCount":4,"pusher":{"login":"mwaldrich","name":null,"path":"/mwaldrich","primaryAvatarUrl":"https://github.com/avatars/u/30734086?s=80&v=4"},"commit":{"message":"fix last leq bug","shortMessageHtmlLink":"fix last leq bug"}},{"before":"148def912e4d0feda3c010724dd3848f02c61380","after":"35caddc5b5fe3694b3547391bfa0059e16b58e21","ref":"refs/heads/rest","pushedAt":"2024-01-16T22:26:33.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"mwaldrich","name":null,"path":"/mwaldrich","primaryAvatarUrl":"https://github.com/avatars/u/30734086?s=80&v=4"},"commit":{"message":"add path sensitivity for pure case statements","shortMessageHtmlLink":"add path sensitivity for pure case statements"}},{"before":"7fcf0ea013778785aa5ab8a05e1f5b9f0f0b8992","after":"148def912e4d0feda3c010724dd3848f02c61380","ref":"refs/heads/rest","pushedAt":"2024-01-16T21:21:04.000Z","pushType":"push","commitsCount":4,"pusher":{"login":"mwaldrich","name":null,"path":"/mwaldrich","primaryAvatarUrl":"https://github.com/avatars/u/30734086?s=80&v=4"},"commit":{"message":"add tests for case statement type tests","shortMessageHtmlLink":"add tests for case statement type tests"}},{"before":"c028e42228431da3ec4fbe6d4feb328554d94637","after":"7fcf0ea013778785aa5ab8a05e1f5b9f0f0b8992","ref":"refs/heads/rest","pushedAt":"2024-01-11T18:04:23.000Z","pushType":"push","commitsCount":2,"pusher":{"login":"mwaldrich","name":null,"path":"/mwaldrich","primaryAvatarUrl":"https://github.com/avatars/u/30734086?s=80&v=4"},"commit":{"message":"bug fixes regarding tracking `pi` in `env`","shortMessageHtmlLink":"bug fixes regarding tracking pi in env"}},{"before":"345eb89d9261c99b53e3e2e5129e3b7413319576","after":"c028e42228431da3ec4fbe6d4feb328554d94637","ref":"refs/heads/rest","pushedAt":"2024-01-11T18:03:40.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"mwaldrich","name":null,"path":"/mwaldrich","primaryAvatarUrl":"https://github.com/avatars/u/30734086?s=80&v=4"},"commit":{"message":"add desc","shortMessageHtmlLink":"add desc"}},{"before":"fbfcaa1950d442be58baadf650dc4eff2d5d12fe","after":"345eb89d9261c99b53e3e2e5129e3b7413319576","ref":"refs/heads/rest","pushedAt":"2024-01-09T17:55:03.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"mwaldrich","name":null,"path":"/mwaldrich","primaryAvatarUrl":"https://github.com/avatars/u/30734086?s=80&v=4"},"commit":{"message":"disable debugging","shortMessageHtmlLink":"disable debugging"}},{"before":"718a7d8a8d5a44d0c93aa9b9e323ace71850786f","after":"fbfcaa1950d442be58baadf650dc4eff2d5d12fe","ref":"refs/heads/rest","pushedAt":"2024-01-09T17:53:39.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"mwaldrich","name":null,"path":"/mwaldrich","primaryAvatarUrl":"https://github.com/avatars/u/30734086?s=80&v=4"},"commit":{"message":"About a month of work","shortMessageHtmlLink":"About a month of work"}},{"before":"bc4fd0ca3a1c4e84a4fa2a4ff5671961c525ec51","after":"718a7d8a8d5a44d0c93aa9b9e323ace71850786f","ref":"refs/heads/rest","pushedAt":"2023-11-14T17:20:55.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"mwaldrich","name":null,"path":"/mwaldrich","primaryAvatarUrl":"https://github.com/avatars/u/30734086?s=80&v=4"},"commit":{"message":"one more syntax error fixed","shortMessageHtmlLink":"one more syntax error fixed"}},{"before":"be4e8131c46256ffcea7a605752534abbe9cd38b","after":"bc4fd0ca3a1c4e84a4fa2a4ff5671961c525ec51","ref":"refs/heads/rest","pushedAt":"2023-11-14T17:20:07.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"mwaldrich","name":null,"path":"/mwaldrich","primaryAvatarUrl":"https://github.com/avatars/u/30734086?s=80&v=4"},"commit":{"message":"fix syntax errors in path sensitive test suite","shortMessageHtmlLink":"fix syntax errors in path sensitive test suite"}},{"before":"ba21853d7fff98b129c011d34f4c0ae317840bf0","after":"be4e8131c46256ffcea7a605752534abbe9cd38b","ref":"refs/heads/rest","pushedAt":"2023-11-14T16:51:19.000Z","pushType":"push","commitsCount":6,"pusher":{"login":"mwaldrich","name":null,"path":"/mwaldrich","primaryAvatarUrl":"https://github.com/avatars/u/30734086?s=80&v=4"},"commit":{"message":"add pattern 14 tc","shortMessageHtmlLink":"add pattern 14 tc"}},{"before":"fd96e97d7afde7a6bc7821f643ad586fb8a9f163","after":"ba21853d7fff98b129c011d34f4c0ae317840bf0","ref":"refs/heads/rest","pushedAt":"2023-11-14T16:14:31.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"mwaldrich","name":null,"path":"/mwaldrich","primaryAvatarUrl":"https://github.com/avatars/u/30734086?s=80&v=4"},"commit":{"message":"add pattern 9 tc","shortMessageHtmlLink":"add pattern 9 tc"}},{"before":"abedb320e2fbb1ce4871be468e40932eedbc568e","after":"fd96e97d7afde7a6bc7821f643ad586fb8a9f163","ref":"refs/heads/rest","pushedAt":"2023-11-14T16:01:23.000Z","pushType":"push","commitsCount":2,"pusher":{"login":"mwaldrich","name":null,"path":"/mwaldrich","primaryAvatarUrl":"https://github.com/avatars/u/30734086?s=80&v=4"},"commit":{"message":"add pattern 8 tc","shortMessageHtmlLink":"add pattern 8 tc"}},{"before":"d779fd533324631fdc9875509086b3ea32769589","after":"abedb320e2fbb1ce4871be468e40932eedbc568e","ref":"refs/heads/rest","pushedAt":"2023-11-14T15:56:48.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"mwaldrich","name":null,"path":"/mwaldrich","primaryAvatarUrl":"https://github.com/avatars/u/30734086?s=80&v=4"},"commit":{"message":"add pattern 6 tc","shortMessageHtmlLink":"add pattern 6 tc"}},{"before":"67498e1b94fdedb73b4dd2b3755bffbaaef0dd47","after":"d779fd533324631fdc9875509086b3ea32769589","ref":"refs/heads/rest","pushedAt":"2023-11-14T15:54:20.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"mwaldrich","name":null,"path":"/mwaldrich","primaryAvatarUrl":"https://github.com/avatars/u/30734086?s=80&v=4"},"commit":{"message":"add pattern 5 tc","shortMessageHtmlLink":"add pattern 5 tc"}},{"before":"5827c782081d7616f27735ca91ccc6fd27cf3622","after":"67498e1b94fdedb73b4dd2b3755bffbaaef0dd47","ref":"refs/heads/rest","pushedAt":"2023-11-14T15:53:06.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"mwaldrich","name":null,"path":"/mwaldrich","primaryAvatarUrl":"https://github.com/avatars/u/30734086?s=80&v=4"},"commit":{"message":"add pattern 4 tc","shortMessageHtmlLink":"add pattern 4 tc"}},{"before":"85f8d66084bfb34708f294e98871c6999a190277","after":"5827c782081d7616f27735ca91ccc6fd27cf3622","ref":"refs/heads/rest","pushedAt":"2023-11-14T15:51:11.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"mwaldrich","name":null,"path":"/mwaldrich","primaryAvatarUrl":"https://github.com/avatars/u/30734086?s=80&v=4"},"commit":{"message":"add pattern 3 tc","shortMessageHtmlLink":"add pattern 3 tc"}},{"before":"db23b55b594ab2efc916fb5f7b17484ce05a3d7a","after":"85f8d66084bfb34708f294e98871c6999a190277","ref":"refs/heads/rest","pushedAt":"2023-11-14T15:10:14.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"mwaldrich","name":null,"path":"/mwaldrich","primaryAvatarUrl":"https://github.com/avatars/u/30734086?s=80&v=4"},"commit":{"message":"add simple path type tests","shortMessageHtmlLink":"add simple path type tests"}},{"before":"5be6a3a063c9bc30ca74192f83223d59155eee98","after":"db23b55b594ab2efc916fb5f7b17484ce05a3d7a","ref":"refs/heads/rest","pushedAt":"2023-10-03T17:22:39.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"mwaldrich","name":null,"path":"/mwaldrich","primaryAvatarUrl":"https://github.com/avatars/u/30734086?s=80&v=4"},"commit":{"message":"add path_sensitive mode","shortMessageHtmlLink":"add path_sensitive mode"}}],"hasNextPage":true,"hasPreviousPage":false,"activityType":"all","actor":null,"timePeriod":"all","sort":"DESC","perPage":30,"startCursor":"Y3Vyc29yOnYyOpK7MjAyNC0wOS0xNlQyMTo0Mzo0Mi4wMDAwMDBazwAAAAS351Cp","endCursor":"Y3Vyc29yOnYyOpK7MjAyMy0xMC0wM1QxNzoyMjozOS4wMDAwMDBazwAAAAOOh8ux"}},"title":"Activity · tupl-tufts/rdl"}