-
Notifications
You must be signed in to change notification settings - Fork 31
Miking Meeting Notes 2020
Note-taker: Viktor Palmkvist
- PRs
- Oscar: https://github.com/miking-lang/miking/pull/229
- There was a rename of a local min that should not have been renamed, but after that we like. @Oscar Eriksson will ping when updated.
- Trio: discussion on draft, performance problems. Possible things to look at:
- bind_all in ast-builder.mc might be quadratic
- assocmap has linear insertion since it maintains the invariant that there is at most one pair per key
- The environment is threaded through the entirety of pprint.mc, as opposed to only passed down the tree, meaning that the environment will contain all symbols in the entire program, as opposed to only those currently in scope.
- Oscar: https://github.com/miking-lang/miking/pull/229
- Other
- We tentatively have the next miking meeting on January 12th, 2021
Note-taker: Oscar Eriksson
- PRs
** https://github.com/miking-lang/miking/pull/228
prefix introduced variables with
_
when generating ocaml code to avoid warnings, then we like! merge. - Discussion
- We discussed if there is a point to move matching to multiple cases compared to
match ... then ... else ...
, to make compilation easier (specifically to ocaml). We concluded that this is probably not worth it since we have more advanced patterns. - We might want to have a
and
construct to sequence patterns (issue @vipa). - Regular (language) patterns in
mexpr
will be changed to prefix patterns when we have Ragnar (issue @vipa). - Add warning parameter to
ocamlCompile
(issue @Oscar Eriksson if necessary)
Note-taker: Linnea Ingmar
PRs
- OCaml compiler trio: https://github.com/miking-lang/miking/pull/227
We like but needs to be rebased before merging. Trio should also check whether
readBytesAsString
is used in Jupyter repo. - Viktor briefly presented (https://github.com/miking-lang/miking/pull/228) but we will look at it again on Thursday
Note-taker: Daniel Lundén
Pull Requests
- https://github.com/miking-lang/miking/pull/224. We like, merge.
- https://github.com/miking-lang/miking/pull/225. We like, merge.
- https://github.com/miking-lang/miking/pull/226. We like, merge.
Discussions
- Discussion of Lars's future work. Lars will have separate meetings with @Daniel Lundén and @vipa + @Linnea Ingmar (correct me if I got this wrong).
- We discussed future work on a front-end (parsing, syntax, etc.) tool in Miking.
- Viktor presented compilation of pattern matching to OCaml.
Note-taker: Daniel Lundén
Previous Pull Requests
- https://github.com/miking-lang/miking/pull/219. Ready for merge.
- https://github.com/miking-lang/miking/pull/223. Ready for merge.
When the above two have been merged, ping @Daniel Lundén (actually, I will get notifications by mail either way).
Discussions
- We discussed the semantics of partial symbolization. For now, we will go with the approach in which already symbolized names are ignored.
- We briefly discussed the type AST proposed by @Daniel Lundén.
Note-taker: Lars Hummelgren
Pull requests
- https://github.com/miking-lang/miking/pull/219 Updated since last time. Authors will create an issue regarding the handling of module names. We like, merge.
- https://github.com/miking-lang/miking/pull/223 We like, merge.
- https://github.com/miking-lang/miking/pull/222 We like, but wait with merge until other stuff is merged.
Note-taker: Viktor Palmkvist
- Daniel: https://github.com/miking-lang/miking/pull/220
- We like, but wait to merge. Daniel will remove the C compilation from the PR and keep working on it separately.
Note-taker: Linnea Ingmar
PR: Compiler task force: https://github.com/miking-lang/miking/pull/219
- Discussion about reusing of AST nodes: TmVar assumes that all strings are valid. This assumption should be preserved. This means that the escaping of identifiers should be moved to a separate pass. Trio will do this in a subsequent PR, or create an issue about it if it’s too hard.
- We like except some minor comments from Viktor.
- Discussion about issue #201, Viktor will add a comment to the issue.
Note-taker: Oscar Eriksson
- https://github.com/miking-lang/miking/pull/215 We like, merge
- https://github.com/miking-lang/miking/pull/216 We like, merge
- Unknown Type @Daniel Lundén Creates an issue on this discussion.
- Overriding semantic functions @Elias Creates an issue on this discussion.
Note-taker: Viktor Palmkvist
- Daniel: https://github.com/miking-lang/miking/pull/215
- We like, but @david should look at the removal of types in closures in particular (we think it makes sense to not have them since we shouldn't need types at runtime). Might also be good with someone to review it, no one has had time to do that yet.
- Oscar et al: https://github.com/miking-lang/miking/pull/216
- Draft, but we mostly like. Fail more nicely if the boot package is not installed, and return a cleanup function so that you can remove the temporary executable.
Note-taker: Lars Hummelgren
Pull Requests
- https://github.com/miking-lang/miking/pull/212 We like, merge.
Discussions
- Type collisions in language fragments. @Daniel Lundén will create an issue on this.
- Current status of types and type annotations in the interpreter. @Daniel Lundén will go through this.
Will have a look at https://github.com/miking-lang/syncon/pull/21 in another meeting.
Note-taker: Gizem Caylak
Pull Requests
- John: Expand option.mc with equality and zipWith functionality https://github.com/miking-lang/miking/pull/211 - We liked, merge
- Oscar: - Setup automatic code formatting using ocamlformat. https://github.com/miking-lang/miking/pull/209 We liked, merge - Migrate code style https://github.com/miking-lang/miking/pull/210 Based on the previous one. We liked, merge - @Daniel Lundén will test it.
Note-taker: Gizem Caylak
Pull Requests
- John: Add lexicographical comparison of strings to stdlib https://github.com/miking-lang/miking/pull/202 - We liked, merge
- Oscar+Lars: Unification of symbol interface and refactoring of MSeq. https://github.com/miking-lang/miking/pull/203 - We liked, merge.
- Oscar: Update dune to 2.0. https://github.com/miking-lang/miking/pull/205 - We liked
- Viktor: Option to not prune shrink trees + show number of productions https://github.com/miking-lang/syncon/pull/20 - We liked, merge
- Daniel: Update ANF to avoid double bindings https://github.com/miking-lang/miking/pull/204 - (Adding utest cases for this PR then) We liked, merge
Proposals
- [Oscar] ocamlformat: https://github.com/miking-lang/miking/pull/206
- Voting
- default[conventional]: 1
- ocamlformat: 4
- compact: 0
- janestreet: 2
- Final decision: ocamlformat 🎉
- Issues + Discussions:
- [@Oscar Eriksson] Create an issue on these questions:
- Should we use compare function? (i.e ltsrting, gtstring vs compare)
- If so, common signature for compare functions?
- [@Daniel Lundén] Create an issue on adding test cases for ANF
For Thursday meeting, if there is no PR then we can cancel it.
Note-taker: Oscar Eriksson
- https://github.com/miking-lang/miking-ipm/pull/24 We like.
- Other Pro tip from John: Github actions is a nice thing to use for automatic testing etc., we should discuss it at a future meeting.
Note-taker: Viktor Palmkvist
- PRs
- Oscar presenting: https://github.com/miking-lang/miking/pull/188
- We like
- Ernst: https://github.com/miking-lang/miking/pull/200
- We like
- Viktor: https://github.com/miking-lang/syncon/pull/19
- We like (Viktor merges)
- Gizem: https://github.com/miking-lang/miking/pull/194
- We like
- Oscar presenting: https://github.com/miking-lang/miking/pull/188
- Other stuff
- We went through issues and looked at the board
- New issue: seems like top-level tests in an external file are run when they are included in another file, i.e., tests will be run multiple times in the standard test suite.
Note-taker: Daniel Lundén
Pull Requests
- https://github.com/miking-lang/miking/pull/197. We like, merge.
- https://github.com/miking-lang/miking/pull/198. We like, merge.
- https://github.com/miking-lang/miking/pull/194. Viktor will write some independent test. Afterwards, we like, merge.
Notes
- It would be nice to allow "use Lang1 + Lang2 in" and similar.
Discussions
- Is "lang" the correct keyword to use for language fragments?
- Discussion of match. For now, no change to how we write matches. In general, we want changes to be very well-motivated before applying them.
Note-taker: Lars Hummelgren
Pull requests
-
https://github.com/miking-lang/miking/pull/194
- Need to add test cases with names that are equal/not equal. Then we like, merge.
-
https://github.com/miking-lang/miking/pull/195
- Add record syntax. Then we like, merge
-
https://github.com/miking-lang/miking/pull/190
- Update ASCII codes. Then we like, merge
-
https://github.com/miking-lang/miking-dppl/pull/8
- We like, merge
-
https://github.com/miking-lang/miking/pull/196
- We like, merge
-
https://github.com/miking-lang/syncon/pull/17
- We like, merge
-
https://github.com/miking-lang/syncon/pull/18
- We like, merge
We updated the Miking board.
Still need to have a discussion of matches.
Note-taker: Daniel Lundén
Pull Requests
- https://github.com/miking-lang/miking/pull/191. We like, merge.
- https://github.com/miking-lang/miking/pull/192. We like, merge.
- https://github.com/miking-lang/miking/pull/193. Fix items discussed during meeting, then merge.
Issues
- We discussed the last comment by John for the issue https://github.com/miking-lang/miking/issues/96, but didn't really reach a conclusion. It's probably best to wait until implementing the compiler.
- We discussed https://github.com/miking-lang/miking/issues/136 a bit more, but again did not reach a conclusion.
- We closed https://github.com/miking-lang/miking/issues/97.
- We closed https://github.com/miking-lang/miking/issues/119.
Backlog
- Discussion of match
Note-taker: Gizem Caylak
Pull Requests
Daniel: Alpha Equivalence for MExpr + additional cleanups https://github.com/miking-lang/miking/pull/189
- We liked but fix according to naming conventions (camelCase) David: Mcore parsing https://github.com/miking-lang/miking/pull/190
- No merging yet. First the problems in parser.mc [Victor’s comment], token problem will be fixed. After fixes, it will be presented on next Tuesday .
- Discussion: Instead of comparing strings, can do utest with using (or do both) [mexpr.mc]
- Future discussions:
- We may want to parametrise language fragments.
- Language composition of fragments of patterns: Difference between wild card and named wild card
Discussion
- Problem with Language fragments: it depends on order and gives no pattern match error.
- Suggested TODO convention: TODO(vipa, 2020-09-17): this is something that should be done. These should not live [https://github.com/miking-lang/miking/issues/181]
Remaining Discussions
- Linnea’s PR
- Discussion of match.
Note-taker: Elias Castegren
Pull Requests
- No new pull requests
Discussions
- snake_case vs. camelCase.
- Last meeting there was a discussion and votes regarding genSym vs gensym and type2type vs typeToType.
- We reiterated that we shouldn’t push camelCase too hard, for example we prefer gensym over genSym, just like we write foldl and not foldL.
- There is still some controversy regarding type2type vs
typeToType. We had another vote with following results
- To: 4
- 2: 5
- Both: 1
- Additionally, we had a discussion on the conventions of functions named like this, for example that a function of the shape foo2bar should be a total, invertible function.
- We decided to keep the naming as is right now, but that the rest of PR #183 should be merged. We conjectured that we would revisit this later...
- The decision should go into the conventions document.
- The discussion on the style of pattern matching (from last meeting) was punted on to the next meeting.
Note-taker: Linnea Ingmar
PRs
Anders (snake_case->camelCase and type2type->typeTotype) https://github.com/miking-lang/miking/pull/183
- We had some varying opinions about spelling of gensym and type2type functions, so we made a vote:
- typeToType: 3 votes, type2type: 2 votes
- gensym: 3 votes, genSym: 0 votes Oscar (remove exp intrinsic) https://github.com/miking-lang/miking/pull/184
- We like, merge Viktor (syncon) https://github.com/miking-lang/syncon/pull/16
- We like, Viktor will merge. Viktor https://github.com/miking-lang/miking/pull/180
- We like after Viktor makes a change.
- Discussion: Convention for pattern matching. Whether to always end with a
never
, or to have a “catch all” branch. We leaned towards thenever
option (explicit but more tedious to write). We raised the question of whether we want to change the match term to have a list of patterns instead of the if-then-else style. To be discussed next meeting as well.
- We updated the Miking board.
Issue #181: TODO notes
- We like Viktor’s suggestion (TODO: should be done, OPT: could be done, NOTE: gives information).
- We think option #2 (statistics bot) or #3 (automatically create issues from TODOs) would be nice to have. Oscar volunteered to have a look at the options.
EDIT: I accidentally switched place of the votes for type2type/typeToType in the first post, now corrected.
Note-taker: Daniel Lundén
Pull Requests
- https://github.com/miking-lang/miking/pull/180 Daniel will review prior to next meeting.
- https://github.com/miking-lang/miking/pull/179 We like, merge.
- https://github.com/miking-lang/miking-benchmarks/pull/2/files We like, merge.
- https://github.com/miking-lang/miking/pull/177 We like, merge.
- https://github.com/miking-lang/miking/pull/178 We like, merge.
- https://github.com/miking-lang/miking/pull/176 We like, but postpone merging (might have conflicts with https://github.com/miking-lang/miking/pull/180).
- https://github.com/miking-lang/miking/pull/175 Change to /- -/ for block comments, then merge. We need to discuss semantic comments further (Elias will open issue).
Discussions
- Avoid TODOs in code if possible. If needed, make sure to annotate TODOs with name and date. Comment from John: it would be nice with a compiler flag for warning about existing TODOs.
Note-taker: Oscar Eriksson
Agenda:
- Stack trace for boot.
- Common list of Miking papers.
- Merge ´ast-builder.mc´ and ´ast.mc´?
- Split ext into sundials/elementary functions?
- Argparser lib discussion.
- Ocaml compiler taskforce.
PRs:
- https://github.com/miking-lang/miking/pull/173 We like, merge.
- https://github.com/miking-lang/syncon/pull/15 We like, merge.
- https://github.com/miking-lang/miking/pull/172 Add refactored tests, then we like, merge.
- https://github.com/miking-lang/miking/pull/171 Hold until tested on different platforms and latest sundialsml version in opam.
- https://github.com/miking-lang/miking/pull/169 We like, merge (Daniel noted that its related to ANF).
- https://github.com/miking-lang/miking/pull/168 We like, merge.
Notes:
- David: Create syntax maintainers group.
- David: Test sundials build on mac.
- Oscar: Factor out elementary functions from ext.
- Oscar: Test sundials build on ubuntu 20.04.
- Ocaml compiler taskforce: Oscar, Lars, Viktor, Linnea, and David.
- David (Or anyone really): Post relevant miking papers on slack.
- Daniel: Add Stack trace for boot feature on issues and board.
- Viktor: Move smap, sfold tests into separate file.
- We genererally like Johns argparser and think it would be useful.
Syntax Change:
Note-taker: Viktor Palmkvist
- PRs
- Linnea: https://github.com/miking-lang/miking/pull/163
- We like
- Elias: https://github.com/miking-lang/miking/pull/151
- CamelCase, then we like, @Elias will ping when changed
- Daniel: https://github.com/miking-lang/miking-vim/pull/1
- We like, but we probably won't run syntax updates in editor modes as full PRs for this meeting, but we still need to have the discussion on how we make sure maintainers are up-to-date on syntax changes.
- Daniel: https://github.com/miking-lang/miking/pull/165
- Need to update after 163 has been merged, @Daniel Lundén will ping when that is done
- Daniel: https://github.com/miking-lang/miking/pull/164
- We like
-
https://github.com/miking-lang/miking/pull/162 (WIP)
- Discussion on the design, some on functional vs. imperative, some on compositional vs. flat. Nothing truly conclusive, but strong like on that this is happening. More comments would be nice.
- https://github.com/miking-lang/syncon/pull/15
- Linnea: https://github.com/miking-lang/miking/pull/163
- Other
- Discussion on opaque datatypes vs using the underlying datatype. Mentions of universal collection types.
- Suggestion to add an Either (or Result, not yet decided), @Anders will start on one.
- We should take a pass and ensure names follow the stated conventions, @Anders will start to look at it
- Utest of symbolized terms.
- Conclusion: make it possible to configure the equivalence function used by utest: utest a with b using eq in body. The previous syntax should still be there and work as before. @Lars Hummelgren will look at it.
- Remaining for a later discussion
- Stack trace for boot.
- Common list of Miking papers.
- Merge ´ast-builder.mc´ and ´ast.mc´?
Note-taker: Daniel Lundén
Pull Requests
- https://github.com/miking-lang/syncon/pull/13. Viktor presented. We like, merge.
- https://github.com/miking-lang/syncon/pull/14. Viktor presented. We like, merge.
- https://github.com/miking-lang/miking/pull/58. Oscar presented. We like, merge.
- https://github.com/miking-lang/miking/pull/161. We like, merge.
Discussions
- Miking board: try to keep relatively up to date in order to inform others about ongoing work.
- Comment syntax: We agreed upon -- for one-line comments, and - - for block comments.
For next meeting
- Utest of symbolized terms.
- Go through Miking board.
- Stack trace for boot.
- Common list of Miking papers.
- Merge ´ast-builder.mc´ and ´ast.mc´?
Note-taker: Linnea Ingmar
PRs
- miking-benchmarks: https://github.com/miking-lang/miking-benchmarks/pull/1
- Linnea, Viktor and David will have separate discussion later.
- We mentioned that this repo should have its own issue board.
- Viktor (syncon): https://github.com/miking-lang/syncon/pull/12
- We like, Viktor will merge.
- John: https://github.com/miking-lang/miking/pull/153
- Discussion about symbols. We will not need sym2int when pretty printing terms containing symbols.
- John will rename to sym2hash and then ping David.
- John: https://github.com/miking-lang/miking/pull/160
- We discussed our philosophy on short-circuiting but didn’t really converge on something concrete.
- We like after also removing not as intrinsic.
- Daniel: https://github.com/miking-lang/miking/pull/158
- We discussed some corner cases for pretty printing sombolized terms (later PR?).
- Daniel and David will discuss some details. Topics we planned to cover but didn’t have time to discuss (if I forgot something you can comment on this post):
- Utest of symbolized terms.
- Go through Miking board.
- Stack trace for boot.
- Common list of Miking papers.
- Merge ´ast-builder.mc´ and ´ast.mc´? Next meeting (Tuesday 8 Sep) the meeting time is 13-14!
Note-taker: Oscar Eriksson
-
https://github.com/miking-lang/miking/pull/158
- sym2int needs to be discussed. We decided that
- ast-builder refactoring should be moved out into a separate PR.
-
https://github.com/miking-lang/syncon/pull/10
- we like, merge
-
https://github.com/miking-lang/syncon/pull/11
- depends on https://github.com/miking-lang/syncon/pull/10
- we like but needs rebase, hold off
-
https://github.com/miking-lang/miking/pull/159
- Wait until https://github.com/miking-lang/miking/pull/158 is merged and some more changes are made before merge. Linnea will give some comments on this.
- We discussed issue https://github.com/miking-lang/miking/issues/136. Victor will append a summary to the issue.
- A general comment was to try to aim for smaller PRs
- Current definitions of equivalence for symbols gives some headaches when appearing in utest since symbols aren't referentially transparent. We discussed the possibility of a looser definition of equivalence for symbols in utest to remedy this. Possible solutions are alpha-equivalence or perhaps syntactical equivalence.
Note-taker: Daniel Lundén
Pull requests
- https://github.com/miking-lang/miking/pull/153 We discussed this PR a bit, but will wait for input from @david. sym2int is useful for John, Linnea, and Daniel (Daniel has already implemented it in parallel for symbolize).
- https://github.com/miking-lang/miking/pull/149 @david Was there some problem merging this after last meeting?
- https://github.com/miking-lang/miking/pull/157 Viktor did a brief review. Small fix of a type signature required, then merge.
- https://github.com/miking-lang/miking/pull/156 We like, merge. In the future, when the framework is more mature, John suggested that we should find some way to (automatically?) notify editor plugin maintainers when syntax changes occur.
- https://github.com/miking-lang/miking/pull/154 We like, merge (after 156).
Discussions
- https://github.com/miking-lang/miking-benchmarks/pull/1 Linnea and Viktor gave a brief progress update, followed by some questions and discussion.
Note-taker: Linnea Ingmar
PRs
- Joey: https://github.com/miking-lang/miking-dppl/pull/6
- Daniel will review and then merge.
- We decided that separate dppl meetings will be held instead of including it into this meeting.
- Linnea: https://github.com/miking-lang/miking
- We like.
- Discussion on whether the current implementation with new constructors will type check, but we decided to leave it as it is now.
- IPM team: https://github.com/miking-lang/miking-ipm
- Some fixes of comments on the PR should be committed.
- Should be rebased.
- Jupyter team: https://github.com/miking-lang/miking/pull/155
- We like
- Jupyter team: https://github.com/miking-lang/miking/pull/154
- We like, but documentation will be extended before merge.
- Jupyter team: https://github.com/miking-lang/miking-lsp/pull/2
- We like
- Jupyter team: https://github.com/miking-lang/miking-jupyter/pull/7
- We like
- Daniel: https://github.com/miking-lang/miking/pull/149
- We like (something small on char literals will be added before merge)
Discussions
- New meeting time from now on: 16-17
- assoc.mc: whether we should change assocInsert to be constant time (thereby penalizing e.g. assocRemove). We decided to not make any change unless performance for assoc.mc becomes a problem.
Note-taker: Anders Nilsson
Pull requests:
- PR 20 (IPM) - IPM
https://github.com/miking-lang/miking-ipm/pull/20
- We like, need to check compatibility with PR17. Ping David when it’s ready to be merged.
- PR 147 - Daniel
https://github.com/miking-lang/miking/pull/147
- We like!
- PR 148 - Linnea
https://github.com/miking-lang/miking/pull/148
- We like but Linnea will make som changes and ping David when it’s ready to be merged.
- PR 149 (draft) - Daniel
https://github.com/miking-lang/miking/pull/149
- Elias updates the parser and makes a new PR including documentation and test cases.
- PR 150 - Jupyter
https://github.com/miking-lang/miking/pull/150
- We like but renaming is needed. Anders/Theo pings David when it’s ready to be merged.
Note-taker: Moa Andersson
PRs
https://github.com/miking-lang/miking-jupyter/pull/6 (from last time). Environment variable removed
- Has error with visualization sometimes (websockets). This could be an error with ipm also
- Relies on IPM #17
- We like https://github.com/miking-lang/miking-ipm/pull/17
- We like
- Has conflict with 16 which is now merged https://github.com/miking-lang/miking-ipm/pull/18
- Remove tree, only have more general description of the files
- David will look more at it later https://github.com/miking-lang/miking/pull/144
- We like https://github.com/miking-lang/syncon/pull/9
- We like
- Viktor is the maintainer so he merges (but still makes prs to the meetings) https://github.com/miking-lang/miking/pull/143
- We like
Other:
- Linnea will look at seq/hashmap restructure
- More documentation should be added to the functions in standard library
Note-taker: Viktor Palmkvist
- IPM
- Calin: https://github.com/miking-lang/miking-ipm/pull/14
- Need to document the protocol. This will be merged as a part of 15
- Calin: https://github.com/miking-lang/miking-ipm/pull/15
- We like
- Moa: https://github.com/miking-lang/miking-ipm/pull/16
- We like, but it will need to be updated after 15 is merged
- Calin: https://github.com/miking-lang/miking-ipm/pull/14
- Jupyter
- Anders: https://github.com/miking-lang/miking-ipm/pull/17
- We like, but will need to be updated after 16 is merged
- Anders: https://github.com/miking-lang/miking-jupyter/pull/6
- Make it check for the ipm-server executable, then only run on first use of %%visualize, after that we like.
- Anders: https://github.com/miking-lang/miking-jupyter/pull/5
- We like
- Anders: https://github.com/miking-lang/miking/pull/138
- We like
- Anders: https://github.com/miking-lang/miking/pull/140
- Fix typo, then we like
- Anders: https://github.com/miking-lang/miking-lsp/pull/1
- We like
- Anders: https://github.com/miking-lang/miking-ipm/pull/17
- Others
- Joey: https://github.com/miking-lang/miking-dppl/pull/4
- Daniel is the main maintainer, so he will do the merging, not David
- We like (in a nebulous fashion for most of us)
- John: https://github.com/miking-lang/miking/pull/139
- We like
- Linnea: https://github.com/miking-lang/miking/pull/137
- Update the README, then we like
- Linnea: https://github.com/miking-lang/miking/pull/141
- Change to use Unix.gettimeofday instead of an extra dependency, and update the README, then we like
- David: https://github.com/miking-lang/miking/pull/142
- Viktor is annoying and complaining about the constructor names, but otherwise we like
- Daniel will start updating the mexpr interpreter to match boot
- Joey: https://github.com/miking-lang/miking-dppl/pull/4
Note-taker: Theo Puranen Åhfeldt
PR:s
-
https://github.com/miking-lang/miking/pull/134
- We like, but move lambdas to beginning of function body.
-
https://github.com/miking-lang/miking/pull/129
- We like, but rename arguments and factor out minor function.
-
https://github.com/miking-lang/miking-ipm/pull/13
- We like, but should be tested.
-
https://github.com/miking-lang/miking/pull/133
- We like, but should be tested.
-
https://github.com/miking-lang/miking-jupyter/pull/4
- We like, merge.
-
https://github.com/miking-lang/miking/pull/135
- Fix special characters.
Other:
- Convention to prefix identifiers that should not be exposed with underscore.
- Create issue for discussing short-circuiting of “and” and “or” statements.
- Installation of ipm-server using environment variable “MI_IPM” to reference the path to the directory.
- Rename “MCORE_STDLIB” to “MI_STDLIB”.
- Create new repo “miking-lsp” for the language server.
Note-taker: Anders Ågren Thuné
PRs
- #127: Python intrinsics We like, after adding a few more tests. Things that are not tested should be documented.
- #128: Repl improvements We like.
- #131: Project restructure We like, after renaming src/boot/boot. People will take a look at the PR, if no additional concerns pop up, David will merge. The mechanics of the optional dependencies are changed in a way that may be surprising to users, this should be documented properly in the PR and in the relevant dune file. Should be rebased onto master after #128 is merged.
- miking-jupyter: #3: OCaml kernel based on boot We like. Should be merged after #131 is merged into the main repo.
- #132: Restructure nfa We like. Should be merged before #130.
- miking-ipm: #11: OCaml server to replace Node version Should print the port used, and select another port if the default is unavailable. We like, after adressing the above. In the end, the webclient should not be polling. Instead a websocket should be used.
- #130: Regular expressions in stdlib We like. This breaks things for the IPM group. Should be merged after #132.
Note-taker: Linnea Ingmar
PRs
- #9: NFA, BTree, digraph and graph https://github.com/miking-lang/miking-ipm/pull/9
- The team will fix some comments on the PR, then it can be merged.
- More documentation should be added, but this will be in next PR. Linnea would like to have the dfa.mc and nfa.mc included the main repo
- #120: Jupyter kernel https://github.com/miking-lang/miking/pull/120
- We decided to move the Jupyter kernel to its own repo.
- This PR will become one PR for the main repo (about restructuring boot etc) and one for the Jupyter kernel repo.
- The team will respond to the comments in the PR and make sure they’re fixed.
- #123 Json parser https://github.com/miking-lang/miking/pull/123
- The team will add more corner cases to the test cases, then David will merge.
- #124 Start of the MCore compiler. Includes a new main function and argument
parsing. https://github.com/miking-lang/miking/pull/124
- We like, merge. Discussions
- Status of the type system?
- A lot of progress has been done but some parts are still being worked on.
- Long-term plans for handling name collisions between included files?
- This is a bigger question regarding how the module system should be designed.
- John creates an issue where people can brain storm on the topic Demos
- Jupyter+Visualisation
- Will be extended to communicate via sockets, not just via files
- Language server
- Started implementing RPC protocol in miking-lsp repo Next time
- OCaml server and REST API
Note-taker: Calin Capitanu
Pull requests (Jupyter):
https://github.com/miking-lang/miking/pull/120
- Added documentation
- Added a notebook full of examples
IPM:
- No pull requests
- ocaml server works on linux, not on mac yet
- Updating all the models to support displayName for specific display configurations
TODO:
- Check each others PRs
- IPM: finish the PRs until tuesday
Comments:
- Anders recommended having a Client that handles the mcore file instead of the server handling it, and then have the text editor handle updates.
- Delete unused files in PRs for IPM team
- Discuss the IPM philosophy with David on what differences are between the paper and what has been done.
Next steps:
- IPM getting input from the webpage back to the source
- Jupyter integrating models into notebook
Note-taker: Anders Nilsson
Pull request (data constructors behave like first-class functions) https://github.com/miking-lang/miking/pull/122
- Removed. See Davids comment. Pull request (utests) https://github.com/miking-lang/miking/pull/121
- We like! Pull request (VScode mode) https://github.com/miking-lang/miking-vscode/pull/2
- Calin communicates with Simone. Pull request (eMacs mode) https://github.com/miking-lang/miking-emacs/pull/3
- Calin communicates with Elias. Pull request (Jupyter team) https://github.com/miking-lang/miking/pull/120
- Syntax highlighting for all the basic constructs
- Autocompletion for Jupyter notebook and repl
- Conversion of python values into mcore values with “Pyconvert”. Supports tuples, records, sequences and other basic data types but not classes and objects. The Jupyter team will add a description of the accepted types in the documentation.
- Matplotlib plots automatically shows up in the notebook (specific to matplotlib).
- Supports python code directly (%%python keyword)
Comments:
- Keep PR
- Extend the documentation with the new features and with examples
- Code review by others. (Anders and Theo will ping when the code is updated with the above)
- Like it but one week more for testing and reviewing.
TODO next Jupyter:
- More comprehensive documentation
- Work on the LSP.
- Writing some wrapper code for mcore for matplotlib (low priority)
- Integration with IPM. Ability to show the IPM generated models in Jupyter notebook.
Pull request PR1/PR2 (IPM) https://github.com/miking-lang/miking-ipm/pull/7 https://github.com/capitanu/miking-ipm/pull/8
- Extended to handle several different types of models
- Extended to handle several models at the same time
- PDF/JPG conversion
Comments:
- Keep the NFA simulation as it is (for now). Non deterministic simulation is a bit tricky.
- Change status from integers to strings.
- Add optional label to the nodes.
- Finalize one PR what can be merged next Tuesday.
- (David gives instructions for differential equation simulation when he comes back.)
IPM TODO next:
- Work on the OCAML server.
- Make the pdf/jpg converter more convenient and extend it with states/nodes highlighting.
- A clear design of the IPM framework. REST API (commands and so on)
- Review the Jupiter team.
Note-taker: Anders Ågren Thuné
-
Pull requests
- Jupyter team: https://github.com/miking-lang/miking/pull/120 has been extended with autocompletion and better error messages. The kernel is now pretty much done, but needs feedback from David and others.
- IPM team: Has a pull request mostly done which adds more model kinds, such as NFAs, at https://github.com/capitanu/miking-ipm/pull/8, which will shortly be submitted to the main repo. Recent work has gone into reducing code duplication and making model generation more efficient.
- Other: Improvements to the VSCode mode: https://github.com/miking-lang/miking-vscode/pull/2 Looks good to us.
-
Next steps
- Jupyter The Jupyter team will look into making an LSP language server for MCore
- IPM The IPM team is working on improving the efficiency of their model generation. It could be worth it to send models one by one as they are generated. After that, they will look into generating LaTeX output.
Note-taker: Moa Andersson
Pull requests
- https://github.com/miking-lang/miking/pull/120/commits Added syntax highlighting, pyconvert function - takes result from python function to mcore value, can execute python code. Looks good but we need to look at the code.
-
https://github.com/miking-lang/miking/pull/121
- Top level utests
- https://github.com/miking-lang/miking/pull/122 - make data constructors behave like first-class functions. Looks Good but more people should look at these changes.
- https://github.com/miking-lang/miking-emacs/pull/3 fixed syntax highlighting for charecters in emacs. Looks good
Other items
- Future work for jupiter group: work on autocompletion
- Future work IPM group: work on making code more efficient, update README, cleanup code etc.
Note-taker: Daniel Lundén
Pull requests
-
https://github.com/miking-lang/miking/pull/120
- Integrated python externals in miking jupyter kernel
- Moved stuff from boot.ml to avoid circular dependencies. More people should look at this before we accept and merge.
Other items
- No PRs from ipm group. They are working on handling more models.
- Comment from jupyter group: rename "parse" to "format".
- Remove #8 (since it has now been combined with #7)
- Future work for jupyter group:
- Fix currently hard-coded paths (should resemble python kernel as closely as possible).
- Work on mixing python and miking code in jupyter.
Note-taker: Daniel Lundén
Pull requests
-
https://github.com/miking-lang/miking-ipm/pull/7
- Fixed old comments from #6 above.
- Moved logic for checking input correctness to Miking.
- Added unique label check.
- Fixed comments from Jupyter group.
-
https://github.com/miking-lang/miking-ipm/pull/8
- New pull request for allowing more than one graph in the browser view.
- Since this PR also contains #7, we decided that these would be combined for now, since we have not yet established how to handle dependencies between unmerged PRs. We also decided to not do any squashing while working in the PR branches (instead, we do the squash when merging).
Other items
- The Jupyter group had no PRs, but are currently working on:
- Handling the combination of Python and Miking code.
- A standalone Miking Jupyter kernel.
Note-taker: Theo Puranen Åhfeldt
Pull requests
- https://github.com/miking-lang/miking/pull/117 We like, merge.
-
https://github.com/miking-lang/miking/pull/118
- Add ‘test all’ command
- Name change of ext to sundials and test that it still works
- Post review
Other items We discussed how the Jupyter- and IPM-team will continue to work during the coming weeks when the seniors are taking leave. The Jupyter-team will work on creating a jupyter-kernel in OCaml using the boot interpreter. The IPM-team has a list of things to do in the slack channel. Both teams will review each others PRs. We will not merge PRs to develop during this time. We should try to do it so that we have multiple smaller PRs. This requires testing some strategies. In the worst case we can do one big PR instead.
Note-taker: Daniel Lundén
Pull requests
- https://github.com/miking-lang/miking/pull/116 We like, but before merge: remove ">>" in front of commands and add bash syntax.
- https://github.com/miking-lang/miking/pull/114 We like, merge.
- https://github.com/miking-lang/miking/pull/115 We like, merge.
- https://github.com/miking-lang/miking-jupyter/pull/2 We like, merge.
-
https://github.com/miking-lang/miking-ipm/pull/6
- Fix accepting states
- Send dfa object as a whole to visualization function.
- Fix hard-coded path and other minor comments from Oscar.
- Use identifiers and names for nodes consistently in javascript code. David takes a look at it and merges tomorrow if ready, otherwise we look at it again and merge at next meeting.
Other items
- We discussed co-authoring of PRs. Viktor posted a link about this above. It seems that squashed PRs retain all authors.
Note-taker: Oscar Eriksson
- PR 113 https://github.com/miking-lang/miking/pull/113 We like, merge! Going forward we should think about the scope of mexpr in the repl.
- PR 112 https://github.com/miking-lang/miking/pull/112 We like it, merge!
- PR 111 https://github.com/miking-lang/miking/pull/111 We like it, merge!
Jupyter
- PR 1 https://github.com/miking-lang/miking-jupyter/pull/1 We like, merge! IPM
- PR 1 https://github.com/miking-lang/miking-ipm/pull/1 Fix hardcoded filepath. Then we like, merge. Going forward (much later) we should investigate using an Ocaml server implementation to allow two-way communication.
Executable name discussion Change executable name miking to mi. Boot will temporarily be installed as mi.
Note-taker: Viktor Palmkvist
Agenda
- Introductions for new members and procedures.
- PRs
- David/Daniel: https://github.com/miking-lang/miking/pull/109
- We like
- Discussion on possible improvements. The regular patterns do not have good examples, Viktor will look at it.
- Anders Thuné: https://github.com/miking-lang/miking/pull/108
- We like
- Sidenote: some functions call error with a not very informative error message, we would like this to be better. Putting it on the board for now, we'll look at it more carefully later.
- David/Daniel: https://github.com/miking-lang/miking/pull/109
- Discussion on whether to use the same PR process for other miking repos. We'll do this, for the smaller repos this essentially just becomes a matter of keeping everyone else informed of what's happening.
- Discussion on where to keep the autodiff stuff: in PPL-repo, in the main repo, or in a separate repo. No decision yet.
- Written instructions on the PR procedure, David will write a draft
- Status of IPM and Jupyter projects
- IPM: understanding the paper and planning work thus far
- Jupyter: work has begun on a REPL and a simple kernel is working
Note-taker: Daniel Lundén
Pull requests
- https://github.com/miking-lang/miking/pull/106 Additions to README in repo. We like it, merge when done.
- https://github.com/miking-lang/miking/pull/104 Viktor will review.
Other items
- 5 new students will start tomorrow. There are 2 new repos in miking-lang which they will use: miking-jupyter and miking-ipm. The miking-jupyter repo will contain support for Miking together with python (for visualization) in Jupyter. The miking-ipm repo will contain support for live programming in Miking, with automatic model and data visualization. There will be a Zoom meeting with the new students 8:30-10:00 tomorrow.
- Linnea gave a presentation on decision points.
Note-taker: Linnea Ingmar
PRs:
- Oscar: calculation of consistent initial values using Ida https://github.com/miking-lang/miking/pull/103. We like, merge!
Discussion:
- David: Plan to start a non-profit Miking association. Main reason copyright issues, but also for creating a community around Miking. Expenses for domain names/servers etc will be supported by Joel. Everyone in today’s meeting will be a member.
- David: Plan to initiate an award in Christian Schulte’s name. For work related to compilers, domain-specific languages, combinatorial optimisation or programming languages. Details to be decided. Miking association would be responsible for the award (we don’t necessarily have to be the committee).
- Klas: Reading group? Sounds like a good idea for the future, we will think about it.
Note-taker: John Wikman
PRs
- https://github.com/miking-lang/miking/pull/99 (Oscar) Undirected graph library. A wrapper around Linnea's digraph library. We like it, but should probably change the mnemonic on the graph functions to clarify that it is undirected. Waiting to merge until having decided on the mnemonic to use.
- https://github.com/miking-lang/miking/pull/101 (Daniel) C language fragments for expressions, statements, and a top level. Reusing much of the MExpr AST syntax. We like it, merge. Think about restructuring language fragments in the standard library in the future.
Discussions
- "How up to date it the interpreter with boot?" Things such as record patterns are missing from the interpreter, but are present in boot. Most changes planned for boot have already been implemented, should start switching focus to the interpreter. Daniel will look at porting boot functionality to the interpreter.
- 4 assistant positions available, summerjobs for 3 months. One job is to integrate Jupyter with MCore. The other is to integrate JavaScript and Node with MCore. Set up mentor groups of 3 people to help the assistants during the summer. Update introduction to MCore help new students come into Miking.
- Discussion about Miking organization is postponed to Thursday.
Note-taker: Viktor Palmkvist
PRs - Oscar: https://github.com/miking-lang/miking/pull/98 - Offshoot: probably want utest in mlang to be used as doctests - Offshoot: naming conventions for functions that error vs. functions that return an Option. - Offshoot: convention for how to encode functions with optional arguments in mcore. - negi apparently already exists, no detailed code review, and should add a few more tests, but otherwise we like
Discussion
- Daniel: transformations between disparate languages, how do we write them?
- Case: two language fragments A and B describing separate languages. Want to implement functions A -> A, A -> B, B -> String. The middle function is the significant one
- Part of the issue: syn
s with the same name are merged, even if that's accidental
- Workaround: rename syn in target language, write transformation as a language fragment
- Offshoot: Daniel's C/CUDA target language and ANF transform should be merged into main, and the compilation should be shown and discussed as input into the design process of mlang
- Offshoot: C expressions and Mexpr expressions share some semantics, it would be nice to be able to reuse implementation work between them without necessarily saying they belong to the same language or extend the same language.
Note-taker: Elias Castegren
Pull Requests
- No pull requests today!
Discussions
- We discussed the syntax of comments.
- We decided to punt on decisions regarding the precise syntax for documentation, etc., but we noted that we should keep it in mind for the decision.
- We said that whatever we pick should ideally also be compatible with Ragnar in the future.
- We discussed whether we should optimize for free-standing block comments or for commenting out code inline. Most people agreed that the latter is done rarely.
- Some more suggestions were put forth, summarized in the GitHub issue: https://github.com/miking-lang/miking/issues/95
Note-taker: Oscar Eriksson
https://github.com/miking-lang/miking/pull/94 Change to nested patterns, then we like it, merge
- https://github.com/miking-lang/miking/pull/93 float.mc -> math.mc, then we like it, merge
- Project board grooming It was groomed
- Issue grooming
- Add labels in Github
- Ensure that everyone can add labels to issues etc.
Note-taker: Daniel Lundén
Pull requests
- https://github.com/miking-lang/miking/pull/90 We like it, merge.
- https://github.com/miking-lang/miking/pull/91 We like it, merge. Some more test cases are required, however.
- https://github.com/miking-lang/miking/pull/92 We like it, merge.
-
https://github.com/miking-lang/miking/pull/93
- Define inf as division with 0 in stdlib instead
- Add CmpFloatEval + test cases
- Add CmpFloatLamlift as a comment only in lamlift.mc
- https://github.com/miking-lang/miking/pull/94 We like it, merge after adding unit tests and after Viktor's PR is merged.
Discussions
- We will start implementing many things in MCore from now on, rather than in boot.
- We will not add Ragnar stuff to boot parser because of bootstrapping issues.
- Postpone comment discussion; Elias will create issue on Github.
Note-taker: Elias Castegren
Pull Requests
-
https://github.com/miking-lang/miking/pull/90 (David)
- Constructors are no longer first-class (they need to be fully applied). Constructor definitions statically define a unique symbol, rather than it being handled dynamically. Constructor and variable names now live in the same namespace.
- David will revert the change regarding namespaces. Variables and constructors will be syntactically distinct.
- Viktor will finish his review.
- We will revisit this PR next week.
-
https://github.com/miking-lang/miking/pull/91 (Viktor)
- Semantic functions now have nested, order-independent patterns. There is also support for and-patterns, or-patterns and not-patterns. Ambiguous patterns (where two patterns are unordered by specificity but are still overlapping) are considered a compilation error.
- Viktor will write a few more test cases.
- Elias will have a look at the PR.
- We will revisit this PR next week.
Discussions
- We need a story for writing test cases which fail due to compilation errors, or test cases that depend on a specific output.
- We should put Linnea’s lstlisting under github.com/miking-lang/
Note-taker: Linnea Ingmar
PRs
- MExpr simplifications https://github.com/miking-lang/miking/pull/89
- Proposal: remove unit keyword (@vipa volunteered to fix)
- We like it (merged during meeting)
- We will move Miking meetings to 14
- Discussion on benchmark ideas for decision points
- Viktor: pattern matching: use memoization or not
- Oscar: Sorting of equations and variables, and representation of data
- Klas: window aggregation algorithms
- John: choice to run on a GPU or CPU
- Daniel: choice of inference algorithms
- Use refinement types for performance (choice of AVX instructions)
- Compile javascript to webassembly or not
- Some related works suggested by Elias
Note-taker: Oscar Eriksson
PRs
-
https://github.com/miking-lang/miking/pull/88
- We like it, merge
- TODO: Possibly change patterns to prefix only
-
https://github.com/miking-lang/miking/pull/86
- We like it, merge
-
https://github.com/miking-lang/miking/pull/87
- We like it, merged
Note-taker: Viktor Palmkvist
PRs - David: mention of removal of de bruijn indices in boot, which might be merged in-between meetings. - Oscar: https://github.com/miking-lang/miking/pull/83 - We like it, merge - Daniel: look at https://github.com/miking-lang/miking/pull/86, though it's not intended to be merged at this point
- Discussion
- WebAssembly: not really looked at yet, but definitely an interesting target. Analogues to John's compilation to GPU.
- Daniels questions: see response by Elias above, but briefly: things are in progress and those questions are explicitly in the case studies we're considering.
Note-taker: Elias Castegren
Pull Requests
- #85 (https://github.com/miking-lang/miking/pull/85).
- Add new term never for impossible cases. Refactor records. Plan for the future is to use pattern matching for projection and to replace tuples by records (syntax remains the same for both). We like it! Merge.
- #83 (https://github.com/miking-lang/miking/pull/83).
- Simple vector and matrix library. Draft, open for comments. Oscar will update names to follow existing conventions. Do not merge yet.
- #82 (https://github.com/miking-lang/miking/pull/82).
- Loosen restrictions for pattern matching and fixing parsing bugs. Viktor wants to remake parts of the implementation. Do not merge yet.
- #81 (https://github.com/miking-lang/miking/pull/81).
- Add atan and pi. We like it! Merge.
- #80 (https://github.com/miking-lang/miking/pull/80).
- Add CTAGS files to .gitignore. We like it! Merge.
- #79 (https://github.com/miking-lang/miking/pull/79).
- Removed the Emacs mode from the Miking repo. We like it! Merge.
Discussions
- We decided to introduce a construct #label (symmetric to #var and #con) for specifying record labels which are not syntactically correct (e.g. numeric values).
- We decided to have maintainers for the repos of different editing modes, for updating them when the language evolves. Elias takes the Emacs mode, Daniel takes the Vim mode and John takes the Sublime mode.
- We discussed if let _ = ... in ... should be valid or not. We decided to punt on the decision.
Note-taker: Linnea Ingmar
- PRs
- Klas: Add functions for options to the stdlib #21 https://github.com/miking-lang/miking/pull/21:
- We like it
- Elias: Replace stub Option modules with module from Batteries #77 https://github.com/miking-lang/miking/pull/77
- We like it
- Daniel: Improved pretty printing in boot #72 https://github.com/miking-lang/miking/pull/72
- Some fixes from last meeting
- We like it
- Oscar: Exposed Ida functions related to interpolating solution #78 https://github.com/miking-lang/miking/pull/78
- We like it
- Oscar: Set prettify-symbols-alist for mcore-mode #76 https://github.com/miking-lang/miking/pull/76
- We should place the Emacs mcore mode in a separate repository. Elias volunteered. Then Oscar makes this PR to that repo.
- Linnea: graph library.
- We like, except Linnea will update uniq function and add type definition to digraph. Will ping David after doing so.
- Klas: Add functions for options to the stdlib #21 https://github.com/miking-lang/miking/pull/21:
- Discussion about generating unique variable names
- Three alternatives: 1. “Locally Nameless”, 2. a mapping from AST with strings->AST with symbols, or 3. the AST nodes have both a string and a symbol.
- We will probably go with the last alternative, unless any problems arise.
- Elias and David will think more about consequences on the type system etc. of this.
- Daniel’s problem solved by fresh function in eval.mc for now.
Note-taker: Viktor Palmkvist
- New convention in OCaml code base
- Snake case for variables, functions, and type names, camel case for constructors
- PRs
- Oscar: https://github.com/miking-lang/miking/pull/70
- We like it
- Daniel: https://github.com/miking-lang/miking/pull/72
- We do not want to have deprecated functions in the code base, make the change instead.
- Consistency on snake case vs. camel case.
- Return ustrings from the functions, but keep the optional configuration arguments.
- Linnea: https://github.com/miking-lang/miking/pull/75
- Refactor to use ast-builder
- Use lower-case for type variables
- After that: we like
- Linnea: https://github.com/miking-lang/miking/pull/74
- Not ready yet, but there was a general air of "we like"
- John: https://github.com/miking-lang/miking/pull/73
- We like it
- Oscar: https://github.com/miking-lang/miking/pull/70
- PRs
Note-taker: Oscar Eriksson
PRs
https://github.com/miking-lang/miking/pull/71
- We like it, merge
https://github.com/miking-lang/miking/pull/70
- Replace patterns implementation data-structure with sequence.
- Move init, head, tail, last to stdlib
- Elias reviews
https://github.com/miking-lang/miking/pull/72
- Merge with
pprint.ml
- Viktor reviews
https://github.com/miking-lang/miking/pull/21
- Add andThen
- replace Dyn with lower case parameters, then: accept
Conventions
Make conventions page at Wiki (Oscar) So far, we have adopted the following conventions:
- Type parameters should be lower-case
- CamelCase
- 2 space indent
- 80 char width (if possible)
Note-taker: Elias Castegren
Pull requests
- Pull request https://github.com/miking-lang/miking/pull/65
- Viktor has updated since last meeting. We like it, merge.
- John tested the PR and saw that it solves his problem. This means that his PR (https://github.com/miking-lang/miking/pull/63) can also be merged.
- Pull request https://github.com/miking-lang/miking/pull/25 was already merged by Elias. In the future, PRs should be merged (or closed) by David in connection to Miking meetings. We liked it, posthumously.
Discussions
- Elias’ issue https://github.com/miking-lang/miking/issues/67
regarding matching on primitives and sequences in semantic
functions
- Some of the features asked for has already been implemented for MExpr (matching on sequences and primitives). Viktor writes a reply to the issue mentioning this. It still needs a translation from MLang though.
- Viktor pointed out that this is very similar to the problems encountered when doing extensible lexing and parsing. The solution we come up with (whether it is a compiler feature or a programming pattern) should be applicable to both.
- Oscar’s experiments with Finger Trees, from Batteries
- Should provide faster random access and concatenation (compared to lists).
- Needs exposing more constant functions to be efficient.
- We went through the interface and decided on which functions to have.
- Oscar would like to have a Map type, since Finger Trees does not help with this. We might add a special case for Oscar’s use-case, to allow us to punt on design decisions regarding, e.g., type classes.
- Discussion on Git(Hub) hygiene
- We decided to use the “Squash and merge” feature of GitHub. This makes the heading of the resulting commit the title of the PR, and the body the concatenation of the commits. This means we should be careful to write informative PR titles (and ideally also informative commit messages).
Note-taker: Daniel Lundén
Pull requests
- Pull request https://github.com/miking-lang/miking/pull/66
- We like it, merge.
- Pull request https://github.com/miking-lang/miking/pull/65
- We like it, merge after adding test case.
- Pull request https://github.com/miking-lang/miking/pull/63
- We like it (from last time), merge after Viktor's fix.
- Pull request https://github.com/miking-lang/miking/pull/25
- Elias and John will discuss this further.
- Pull request https://github.com/miking-lang/miking/pull/21
- Elias will check with Klas.
Discussions
- Lists/sequences/vectors/universal collections
- John needs fast concat.
- Oscar needs fast random access.
- Temporary solution: finger trees or other more efficient data structure? Oscar will look at it.
- Merging semantic functions with nested patterns
- Discussions lead by Viktor. Viktor and Elias will look at it further? (edited)
Note-taker: Viktor Palmkvist
- Status update
- Decision on library naming style: lower case, words separated by dash (-)
- PRs
- Oscar: https://github.com/miking-lang/miking/pull/62 and/or https://github.com/miking-lang/miking/pull/64
- Go with the first, except have only one new target that uses all external libraries
- We like it (after minor renaming)
- David: https://github.com/miking-lang/miking/pull/61
- Likely merge conflict with https://github.com/miking-lang/miking/pull/62
- We like it
- John: https://github.com/miking-lang/miking/pull/60
- We like it
- John: https://github.com/miking-lang/miking/pull/63
- We like it, but Viktor needs to look at a bug that this PR exposes
- Name the library ast-builder
- Oscar: https://github.com/miking-lang/miking/pull/62 and/or https://github.com/miking-lang/miking/pull/64
Note-taker: John Wikman
Attendees: David Broman, Viktor Palmkvist, Linnea Ingmar, Daniel Lundén, Oscar Eriksson, Klas Segeljakt, John Wikman Pull requests
- Review and discussion postponed to next meeting due to time shortage.
Code formatting conventions
- Try to keep to 80 characters per line until further notice. Can exceed 80 characters if it aid readability.
- Scope indentation should be 2 spaces. Formally voted in favor of by 6 out of 7 attendees.
- This will be handled by an automatic formatter in the end.
Remove the Const from the AST
- An idea brought forward was to remove the Const type from the AST and replace all removed functionality by Expr constructs. E.g. TmConst (CInt) would become TmInt and TmConst (CAddi) would become TmIntrinsic (Addi).
- This idea was positively received by the attendees.
- Also discussed how to keep gti, lti, neqi, eqi (etc.) in the environment, but in the end that these could be mapped differently to the builtin intrinsics.
Option to output desugared program in boot
- It would be nice to have the option in boot to output the program as it looks after the MLang flattening and desugaring has been applied. Would be passed an an argument option.
- We like it, Daniel will implement it if it doesnt take up too much time.
Factor out convenience functions
- Take the convenience functions from lamlift.mc that are used to create an AST without a parser and move them to a separate file under the stdlib/mexpr.
- We like it, John will implement it.
Benchmarks
- Viktor and Linnea presented their current progress on the benchmark setup.
- The benchmarks will be kept in a separate repository from the miking repository. This will contain benchmarks written in MCore as well as the same tests implemented in other languages for comparison.
- Two approaches of how to organize the benchmarks were presented: A flat structure or a hierachical structure where datasets and test configuration can be inherited from the higher level.
- The discussion leaned towards using some form of hierachy for the structure, but not too hierarchical as some benchmarks might be very specific and not share much configuration or datasets with other benchmarks.
- The tool to manage these testcases would be developed by ourselves. Go was brought up as a candidate language to develop the tool in due to its cross-platform support, but Rust was brought up as a preferrable alternative.
- Some remarks brought forth was that this setup should take into account factors such as architectures, compilers, and compiler flags.
- The benchmark system will be split into 3 separate repostirories: one for the benchmarks, one for the tool, and one for the results.
- Will start sketching on the benchmark structure until next meeting.
Note-taker: Linnea Ingmar
- From next week and onward: we will have two 1 hour meetings per week. Tuesdays and Thursdays 15-16 by default.
- Went through the board and discussed what everyone is working on
- Created a Wiki to put documentation such as Recursion Cookbook. Anyone logged into GitHub can edit, but we assume this is not a problem.
- PRs -- General comment: Always check on GitHub that PRs can be rebased. -- #57 Bug fix in lambda lifting. https://github.com/miking-lang/miking/pull/57 We like it, merge! -- #59 Reuse of generated arguments within the same scope. https://github.com/miking-lang/miking/pull/59 We like it, merge! -- #58: Forward mode auto diff. https://github.com/miking-lang/miking/pull/58 Needs a review. David volunteers.
- Oscar presented Forward Mode Auto Differentiation.
- Documentation of code: at least, give an overview description in the top of the file. If relevant, include sources of implementation, e.g. reference to papers.
- Follow up discussion on whether to remove CSeq. Agreed to do so!
- Follow up discussion on column in board: agreed to remove pull-request column.
- Next meeting: Linnea and Viktor go through thoughts on benchmarking framework. Use merge sort as example. (edited)
Note-taker: Oscar Eriksson
PRs
- Add lambda lifting in MCore
https://github.com/miking-lang/miking/pull/46
We like it - merge
Going forward:
- To be able to handle partial applications over constants we can use eta-expansion.
- Add test: evaluate lifted to non-lifted.
- Add missing parenthesis in pretty printer for TmApp https://github.com/miking-lang/miking/pull/56 We like it - merge
- Implemented non-observable unique symbols https://github.com/miking-lang/miking/pull/54 Fix: Change gensymb to gensym then: We like it - merge
- Failed const app error point to app rather than arg declaration https://github.com/miking-lang/miking/pull/55/commits We like it - merge
- From Last time
- CSeq in Const contains Expr, do we want to only have TmSeq instead? (it's in Expr) We want operators over consts to be closed. We have to look at this further and we do not want this duplication in the CSeq case.
- Put editor support in separate repositories? Under miking organization? Yes, add as task. Name repo as miking-.
- Columns in board We suggest that we keep done and remove pull-request column so that done includes tasks that have an associated PR. (edited)
Note-taker: Viktor Palmkvist
PRs:
- Oscar: change type of argument to eval https://github.com/miking-lang/miking/pull/43
- we like it
- Oscar: library functions https://github.com/miking-lang/miking/pull/48
- we like it
- Oscar: mcore-mode syntax highlighting bugfix https://github.com/miking-lang/miking/pull/50
- we like it
- Oscar: smap + sfold https://github.com/miking-lang/miking/pull/49
- only for Expr_Expr, and not the things in eval.mc
- we like it
- John: pretty-printing sequences of characters as strings https://github.com/miking-lang/miking/pull/51
- we like it
- John: add language fragments for types to the main composed language https://github.com/miking-lang/miking/pull/53
- we like it
- potential merge conflict (though easily solved) with https://github.com/miking-lang/miking/pull/49
- John: lambda-lifting https://github.com/miking-lang/miking/pull/46
- works for entire ast.mc
- caveat: removes types for now
- no peer-review yet
- adds constructors for toplevel defintions to Expr, maybe add to another syn?
- merge after constructor reuse PR
- Viktor: reuse constructors across language https://github.com/miking-lang/miking/pull/52
- we like it Other points
- David: benchmarks
- Linnea and Viktor in working group
- Viktor: Recursion Cookbook
- Probably put in GitHub wiki for the project Followup questions:
- CSeq in Const contains Expr, do we want to only have TmSeq instead? (it's in Expr)
- Put editor support in separate repositories? Under miking organization?
- Add Linnea to core team
- We cannot set labels for issues, I assume only David and Elias can?
- Changed column "Done and merged" to "Done" in miking project board. Do we want two columns "Done and merged" and "Done and won't be merged"?
Note-taker: Viktor Palmkvist
Summary on the recursion part of the meeting today:
- Have a semantic function for a single generic step, and a semantic function for a generic fold
-
smap : (focus -> a) -> term -> term[focus -> a]
(The square brackets mean substitution, but we haven't really solved how this looks in the type system, since we don't have a typesystem) (For the example, replaceterm
withStatement
andfocus
withExpression
) sfold : (b -> a -> b) -> b -> term[focus -> a] -> b
- concretely, we will initially implement these as
sem smap_term_focus
andsem sfold_term_focus
- with these we can write, e.g., bottom-up fold as
foldbu f = smap (foldbu f) >>> f
(using>>>
for left-to-right function composition), or counting the number of nodes ascountNodes = foldbu (sfold (+) 1)
Note-taker: Daniel Lundén
- Reviewing policy:
- Write in Slack when PR ready, ask for review.
- New PRs:
- [Accept] #36 Pretty printer for MExpr.
- [Accept] #43 Replace environment with a context and add float arithmetic.
- Recursion schemes:
- Read up and discuss on future meeting (Viktor lead?)
- Term equivalence:
- Write separate eq checks for own types.
- Have as a semantic function (+ ordering).
- k-CFA:
- Seems like a good idea in general, will discuss further on future meeting (Daniel lead?)
- Mutability:
- Implement everything with immutable data structures for now.
- Syntactic sugar (record with):
- To be continued. Merge operator?
- Default values, types:
- Will be discussed on Slack.
2020-02-25, 13:00-15:00
- Recursion schemes
- k-CFA (edited)