{"payload":{"feedbackUrl":"https://github.com/orgs/community/discussions/53140","repo":{"id":65159560,"defaultBranch":"main","name":"Fennel","ownerLogin":"bakpakin","currentUserCanPush":false,"isFork":false,"isEmpty":false,"createdAt":"2016-08-07T23:55:24.000Z","ownerAvatar":"https://avatars.githubusercontent.com/u/6185660?v=4","public":true,"private":false,"isOrgOwned":false},"refInfo":{"name":"","listCacheKey":"v0:1718078925.0","currentOid":""},"activityList":{"items":[{"before":"b1752cb86f15194daf6db42b26d47a20e8097693","after":"4217c2fdd86a69aae020452a709b8a980cc654d1","ref":"refs/heads/main","pushedAt":"2024-06-12T04:45:55.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"technomancy","name":"Phil Hagelberg","path":"/technomancy","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/141?s=80&v=4"},"commit":{"message":"Allow plugins to be written in Lua.","shortMessageHtmlLink":"Allow plugins to be written in Lua."}},{"before":"88dbf21f0226863bae4e72317993081e34e9c47d","after":"b1752cb86f15194daf6db42b26d47a20e8097693","ref":"refs/heads/main","pushedAt":"2024-06-12T03:21:11.000Z","pushType":"push","commitsCount":4,"pusher":{"login":"technomancy","name":"Phil Hagelberg","path":"/technomancy","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/141?s=80&v=4"},"commit":{"message":"Add getinfo as fennel-sourcemap-aware equivalent of debug.getinfo.","shortMessageHtmlLink":"Add getinfo as fennel-sourcemap-aware equivalent of debug.getinfo."}},{"before":null,"after":"eba5a5bdfb93e674046e977ffa1755a3a8ebf449","ref":"refs/heads/struct","pushedAt":"2024-06-11T04:08:45.000Z","pushType":"branch_creation","commitsCount":0,"pusher":{"login":"technomancy","name":"Phil Hagelberg","path":"/technomancy","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/141?s=80&v=4"},"commit":{"message":"Structs, I guess.\n\nRacketeers rejoice.\n\nThis implementation puts struct in the list of regular macros, which\nis wrong. It should only be exposed in compiler scope.","shortMessageHtmlLink":"Structs, I guess."}},{"before":"2ed24c70e04747239dc94f13f820ca7cc31e90c4","after":"88dbf21f0226863bae4e72317993081e34e9c47d","ref":"refs/heads/main","pushedAt":"2024-06-03T17:10:58.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"jaawerth","name":"Jesse Wertheim","path":"/jaawerth","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/5314507?s=80&v=4"},"commit":{"message":"fix scm-2 rockspec to work with current fennel\n\nThe LUADIR needed to be set as LUA_LIB_DIR in the makefile for it to\ninstall the fennel.lua library in the right place.","shortMessageHtmlLink":"fix scm-2 rockspec to work with current fennel"}},{"before":"bdae6735b931d2da7591c4da1bd699302cda3895","after":"2ed24c70e04747239dc94f13f820ca7cc31e90c4","ref":"refs/heads/main","pushedAt":"2024-06-03T02:19:39.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"technomancy","name":"Phil Hagelberg","path":"/technomancy","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/141?s=80&v=4"},"commit":{"message":"Compile tabs to \\t instead of \\9.","shortMessageHtmlLink":"Compile tabs to \\t instead of \\9."}},{"before":"a35c5e08c4c5b3cdc38a2f180e3abc827ff660d6","after":"bdae6735b931d2da7591c4da1bd699302cda3895","ref":"refs/heads/main","pushedAt":"2024-06-01T04:47:33.000Z","pushType":"push","commitsCount":2,"pusher":{"login":"technomancy","name":"Phil Hagelberg","path":"/technomancy","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/141?s=80&v=4"},"commit":{"message":"Clarify a few things in readme and contributing guide.","shortMessageHtmlLink":"Clarify a few things in readme and contributing guide."}},{"before":"724fea060d93f6e567ad665d43c4195d3ec62405","after":"a35c5e08c4c5b3cdc38a2f180e3abc827ff660d6","ref":"refs/heads/main","pushedAt":"2024-05-24T15:59:22.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"technomancy","name":"Phil Hagelberg","path":"/technomancy","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/141?s=80&v=4"},"commit":{"message":"Add deprecation warning for direct multivalues in operators.\n\nHopefully this will be removed in 2.0, because it implies that\noperators support multivalues in general, when in fact they only\nsupport them when put directly in the args, which there's no reason\never to do.","shortMessageHtmlLink":"Add deprecation warning for direct multivalues in operators."}},{"before":"7dd6b6a47caa1d31df0a65ce2255f3f1053666a7","after":"724fea060d93f6e567ad665d43c4195d3ec62405","ref":"refs/heads/main","pushedAt":"2024-05-24T00:12:01.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"jaawerth","name":"Jesse Wertheim","path":"/jaawerth","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/5314507?s=80&v=4"},"commit":{"message":"make macrodebug emit valid code on cyclic ASTs\n\nWhen macrodebug expands to a cyclic/recursive AST like\n\n (macrodebug (case [1 2] (where (or [x y] [y nil x]) (= 3 (+ x y))) x))\n\nit currently emits placeholders @1, @2, etc due to the implicit\n`:detect-cycles? true` passed to fennel.view, resulting in invalid\nfennel syntax in the serialized output.\n\nThis change simply disables detect-cycles. This fixes the case where\na macro expands to an AST with references to node higher in the tree\nlike the above, which covers most edge cases.\n\nThis makes it *possible* to emit an infinitely recursive AST, which with\nthis change would result in a massive expansion that eventually gives up\nupon hotting the maximum depth for fennel.view, but this is a mutch\nrarer edge case.\n\nThis should eventually be revisited to any failure cases involving\ninfiniten AST's serialization can give a useful compiler error, however.\nIdeally, this will eventually be covered by @-macros such that @\nforms can actually be evaluated as fennel syntax back into a\nself-referencing table.","shortMessageHtmlLink":"make macrodebug emit valid code on cyclic ASTs"}},{"before":"5a090a8001892e91dd6196aedcae1fb127b22d40","after":"7dd6b6a47caa1d31df0a65ce2255f3f1053666a7","ref":"refs/heads/main","pushedAt":"2024-05-22T02:43:39.000Z","pushType":"push","commitsCount":6,"pusher":{"login":"technomancy","name":"Phil Hagelberg","path":"/technomancy","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/141?s=80&v=4"},"commit":{"message":"Support string pattern for plugin :versions.","shortMessageHtmlLink":"Support string pattern for plugin :versions."}},{"before":"9813acfa65cd63bca54d333fa757cf2fb6406fa3","after":"5a090a8001892e91dd6196aedcae1fb127b22d40","ref":"refs/heads/main","pushedAt":"2024-05-19T15:24:58.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"technomancy","name":"Phil Hagelberg","path":"/technomancy","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/141?s=80&v=4"},"commit":{"message":"Fix typos in code comments","shortMessageHtmlLink":"Fix typos in code comments"}},{"before":"66a593dd18651c74133f79af45a47ac203a23f7a","after":"9813acfa65cd63bca54d333fa757cf2fb6406fa3","ref":"refs/heads/main","pushedAt":"2024-05-17T04:14:06.000Z","pushType":"push","commitsCount":6,"pusher":{"login":"technomancy","name":"Phil Hagelberg","path":"/technomancy","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/141?s=80&v=4"},"commit":{"message":"Merge branch 'optimize-table-destructure'","shortMessageHtmlLink":"Merge branch 'optimize-table-destructure'"}},{"before":"d063d32b006a4a8b9873484984c1be821a4c79fe","after":"66a593dd18651c74133f79af45a47ac203a23f7a","ref":"refs/heads/main","pushedAt":"2024-05-16T09:13:30.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"technomancy","name":"Phil Hagelberg","path":"/technomancy","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/141?s=80&v=4"},"commit":{"message":"Comparator emits locals instead of IIFE\n\nThe (define-comparator-special) function is no longer responsible\nfor short circuit protection, so it now emits locals instead of IIFE.\nThis wasn't possible before the (and)/(or) changes, because emitting\nstatements would interrupt short circuit behavior.\n\n(< 1 (funcall) x 4)\n\nBefore this commit:\nreturn (function(_1_,_2_,_3_,_4_) return (_1_ < _2_) and (_2_ < _3_) and\n(_3_ < _4_) end)(1,funcall(),x,4)\n\nAfter this commit:\nlocal _1_ = funcall()\nreturn ((1 < _1_) and (_1_ < x) and (x < 4))\n\nThis is better because the IIFE is removed, and there are fewer gensyms.\n\nI've also modified fennel's static analysis capibilities, ie the\n(short-circuit-safe?) function. Not all comparator expressions need\nshort circuit protection. There are three categories:\nOnes like (< 1 x) with exactly two arguments are handled by\n(native-comparator), and do not need protection.\nOnes like (< 1 x 5) with idempotent argugments are handled by\n(idempotent-comparator), and do not need protection.\nOnly ones like (< 1 (x!) 5) are handled by the new (binding-comparator)\nand need short circuit protection.\nI extracted the logic that chooses the comparator implementation to the\nnew (comparator-special-type) function. This way, the static analysis\n(short-circuit-safe?) function can call it to distinguish which\ncomparisons are safe.\n\nAlso, because of the way idempotent-comparator chains the arguments,\nonly the middle arguments actually need to be idempotent. I've changed\nthe comparator logic so that calls like (< (foo!) bar baz (quux!)) will\nuse the (idempotent-comparator) function because the middle args are\nidempotent, even though the first and last args aren't idempotent.","shortMessageHtmlLink":"Comparator emits locals instead of IIFE"}},{"before":"ff9fd5ff0dc8c0030cf9e84a8942435185f98b9e","after":"d063d32b006a4a8b9873484984c1be821a4c79fe","ref":"refs/heads/main","pushedAt":"2024-05-16T01:54:23.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"technomancy","name":"Phil Hagelberg","path":"/technomancy","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/141?s=80&v=4"},"commit":{"message":"Emit not-found warning from include even for non-literals.\n\nUsed to use this as a way to dodge the warnings before --skip-include\nwas implemented; now it's better to specify it on the CLI.","shortMessageHtmlLink":"Emit not-found warning from include even for non-literals."}},{"before":"88960d80415addafcfe6df2452f7f813a19dbf91","after":"ff9fd5ff0dc8c0030cf9e84a8942435185f98b9e","ref":"refs/heads/main","pushedAt":"2024-05-16T01:04:34.000Z","pushType":"push","commitsCount":3,"pusher":{"login":"technomancy","name":"Phil Hagelberg","path":"/technomancy","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/141?s=80&v=4"},"commit":{"message":"Disable strict global checking when _ENV is in scope.\n\nIt's impossible for the compiler to determine what globals are valid\nin this case, so just don't check at all.\n\nThere's still a problem of _ENV becoming a mangling target, but that\nshould be treated as a separate bug.","shortMessageHtmlLink":"Disable strict global checking when _ENV is in scope."}},{"before":"db6c64502686c957e3183067e389303b2333ae8c","after":"88960d80415addafcfe6df2452f7f813a19dbf91","ref":"refs/heads/main","pushedAt":"2024-05-09T08:31:56.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"technomancy","name":"Phil Hagelberg","path":"/technomancy","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/141?s=80&v=4"},"commit":{"message":"Un-deprecate tset for doto reasons. Mention fennel.repl incompatibility.","shortMessageHtmlLink":"Un-deprecate tset for doto reasons. Mention fennel.repl incompatibility."}},{"before":"a4287243223768d8729ce95674228f5136f8bb46","after":"db6c64502686c957e3183067e389303b2333ae8c","ref":"refs/heads/main","pushedAt":"2024-05-04T22:01:59.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"technomancy","name":"Phil Hagelberg","path":"/technomancy","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/141?s=80&v=4"},"commit":{"message":"Remove parentheses from method call target in more cases\n\nFixes fennel#219.\n\n`do end (a.b):c()` -> `a.b:c()`\n`do end (a[1]):c()` -> `a[1]:c()`\n`do end (a().b):c()` -> `a().b:c()`\n\nI believe this puts us down to only 2 `do end` intstances in the\nentire compendium.","shortMessageHtmlLink":"Remove parentheses from method call target in more cases"}},{"before":"204fcc8a6678a141b878d17323582958f4b87e75","after":"a4287243223768d8729ce95674228f5136f8bb46","ref":"refs/heads/main","pushedAt":"2024-05-04T20:18:03.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"technomancy","name":"Phil Hagelberg","path":"/technomancy","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/141?s=80&v=4"},"commit":{"message":"Fix inconsistent capitalization in 'fennel --help'\n\nThe help message mixes \"REPL\" and \"repl\", \"Fennel\" and \"fennel\", etc. This\npatch unifies both. Also, Lisp is capitalized, as we refer to the family of\nlanguages, not the speech impediment.","shortMessageHtmlLink":"Fix inconsistent capitalization in 'fennel --help'"}},{"before":"e8fdac6ccb37df970fe96095077c5bb35b371e17","after":"eb4df868205e1ef0ceac6c94ba949f747876cd15","ref":"refs/heads/prompt","pushedAt":"2024-04-27T19:15:30.000Z","pushType":"force_push","commitsCount":0,"pusher":{"login":"technomancy","name":"Phil Hagelberg","path":"/technomancy","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/141?s=80&v=4"},"commit":{"message":"prompt","shortMessageHtmlLink":"prompt"}},{"before":"94b4a71c3528e887aba870a8c58a55075d4a3090","after":"e8fdac6ccb37df970fe96095077c5bb35b371e17","ref":"refs/heads/prompt","pushedAt":"2024-04-27T19:13:40.000Z","pushType":"force_push","commitsCount":0,"pusher":{"login":"technomancy","name":"Phil Hagelberg","path":"/technomancy","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/141?s=80&v=4"},"commit":{"message":"prompt","shortMessageHtmlLink":"prompt"}},{"before":null,"after":"94b4a71c3528e887aba870a8c58a55075d4a3090","ref":"refs/heads/prompt","pushedAt":"2024-04-27T19:09:45.000Z","pushType":"branch_creation","commitsCount":0,"pusher":{"login":"technomancy","name":"Phil Hagelberg","path":"/technomancy","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/141?s=80&v=4"},"commit":{"message":"prompt","shortMessageHtmlLink":"prompt"}},{"before":"7187176e359f63608343849784b4a1c6d45addfb","after":"204fcc8a6678a141b878d17323582958f4b87e75","ref":"refs/heads/main","pushedAt":"2024-04-27T16:29:59.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"technomancy","name":"Phil Hagelberg","path":"/technomancy","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/141?s=80&v=4"},"commit":{"message":"Update Macro Modules docs to unquote identifiers","shortMessageHtmlLink":"Update Macro Modules docs to unquote identifiers"}},{"before":"82a36ece00338095c574520eb5eaa5145c154ec9","after":"c856d78d930f961bd9c11c62c634d038f05633d5","ref":"refs/heads/optimize-table-destructure","pushedAt":"2024-04-21T02:18:57.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"technomancy","name":"Phil Hagelberg","path":"/technomancy","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/141?s=80&v=4"},"commit":{"message":"Update pattern matching macros to optimize table destructures too.","shortMessageHtmlLink":"Update pattern matching macros to optimize table destructures too."}},{"before":"9222a65f49111dd1542cc4c2c5f3525a6cbbf5d0","after":"7187176e359f63608343849784b4a1c6d45addfb","ref":"refs/heads/main","pushedAt":"2024-04-20T23:30:38.000Z","pushType":"push","commitsCount":4,"pusher":{"login":"technomancy","name":"Phil Hagelberg","path":"/technomancy","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/141?s=80&v=4"},"commit":{"message":"Catch parsing mistakes from missing whitespace before strings.","shortMessageHtmlLink":"Catch parsing mistakes from missing whitespace before strings."}},{"before":"6ee38646dcbf7db067f6a4ba52281f68c521081e","after":"82a36ece00338095c574520eb5eaa5145c154ec9","ref":"refs/heads/optimize-table-destructure","pushedAt":"2024-04-20T16:56:45.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"technomancy","name":"Phil Hagelberg","path":"/technomancy","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/141?s=80&v=4"},"commit":{"message":"Ensure that values-optimized table destructuring is local if needed.\n\nPreviously it would emit assignments without the \"local\" part, which\nwould result in globals.","shortMessageHtmlLink":"Ensure that values-optimized table destructuring is local if needed."}},{"before":null,"after":"6ee38646dcbf7db067f6a4ba52281f68c521081e","ref":"refs/heads/optimize-table-destructure","pushedAt":"2024-04-18T03:44:01.000Z","pushType":"branch_creation","commitsCount":0,"pusher":{"login":"technomancy","name":"Phil Hagelberg","path":"/technomancy","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/141?s=80&v=4"},"commit":{"message":"Unwrap tables when destructuring table literal into a table.\n\nOptimize so that: (local [ok val] [(pcall my-function x y z)])\nis equivalent to: (local (ok val) (pcall my-function x y z))\n\nThis allows us to reduce the use of non-call parens and de-emphasize\nthe role of multiple values.\n\nThis does not cover pattern matching yet, just regular destructuring.\n\nIt also still needs a lot of documentation updates.","shortMessageHtmlLink":"Unwrap tables when destructuring table literal into a table."}},{"before":"d808246586dafc824b9e25cd5d32768b081385be","after":"9222a65f49111dd1542cc4c2c5f3525a6cbbf5d0","ref":"refs/heads/main","pushedAt":"2024-04-16T05:01:15.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"technomancy","name":"Phil Hagelberg","path":"/technomancy","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/141?s=80&v=4"},"commit":{"message":"Make with-open safe to compile when the debug table is missing.","shortMessageHtmlLink":"Make with-open safe to compile when the debug table is missing."}},{"before":null,"after":"04333f2224df734a4c5d406a08a033de5043c205","ref":"refs/heads/copy","pushedAt":"2024-04-16T04:53:04.000Z","pushType":"branch_creation","commitsCount":0,"pusher":{"login":"technomancy","name":"Phil Hagelberg","path":"/technomancy","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/141?s=80&v=4"},"commit":{"message":"Expose copy in macro scope.\n\nInstead of having our own copy function private to Fennel's own\nmacros, expose it for all macros.\n\nIn a few cases, we need to skip the copying of the metatable, so allow\nthat with a 3rd argument.","shortMessageHtmlLink":"Expose copy in macro scope."}},{"before":"a7c45bc8e01425e81cb2b4382fcecd7d26a38069","after":"d808246586dafc824b9e25cd5d32768b081385be","ref":"refs/heads/main","pushedAt":"2024-04-14T23:45:02.000Z","pushType":"push","commitsCount":2,"pusher":{"login":"technomancy","name":"Phil Hagelberg","path":"/technomancy","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/141?s=80&v=4"},"commit":{"message":"Use on-error for repl reload failures.\n\nThe \"Lua Compile\" section of on-error is never actually used, so get\nrid of it.","shortMessageHtmlLink":"Use on-error for repl reload failures."}},{"before":"bb597e35f9ea0b939a9534eb0634f4ce22c2c7fd","after":"a7c45bc8e01425e81cb2b4382fcecd7d26a38069","ref":"refs/heads/main","pushedAt":"2024-04-14T03:53:31.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"technomancy","name":"Phil Hagelberg","path":"/technomancy","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/141?s=80&v=4"},"commit":{"message":"Introduce utils.call-of? helper function.","shortMessageHtmlLink":"Introduce utils.call-of? helper function."}},{"before":"e497d62576b1056add070e44408ccc34b6c64001","after":"bb597e35f9ea0b939a9534eb0634f4ce22c2c7fd","ref":"refs/heads/main","pushedAt":"2024-04-13T05:25:05.000Z","pushType":"push","commitsCount":15,"pusher":{"login":"technomancy","name":"Phil Hagelberg","path":"/technomancy","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/141?s=80&v=4"},"commit":{"message":"Tidy up a few utils functions.","shortMessageHtmlLink":"Tidy up a few utils functions."}}],"hasNextPage":true,"hasPreviousPage":false,"activityType":"all","actor":null,"timePeriod":"all","sort":"DESC","perPage":30,"cursor":"djE6ks8AAAAEYuRgUwA","startCursor":null,"endCursor":null}},"title":"Activity ยท bakpakin/Fennel"}