00:04:45 | Araq | AST changes, minor ones. |
00:05:01 | Araq | can't think of anything else right now, good night |
00:05:15 | FromDiscord_ | <Shield> good night |
00:05:54 | * | theelous3_ joined #nim |
00:07:35 | * | zachk quit (Quit: Leaving) |
00:35:49 | * | platoff joined #nim |
00:40:07 | Aareon | Py-Nim is getting kind of out of hand already. |
00:46:37 | * | platoff quit (Quit: My MacBook has gone to sleep. ZZZzzzβ¦) |
00:47:10 | FromDiscord_ | <Shield> do you have a public repo? |
00:49:44 | * | zama quit (Ping timeout: 252 seconds) |
00:50:25 | Aareon | Yea, https://github.com/Aareon/py-nim |
00:50:41 | Aareon | working in the `lexer-impl-patch-1` branch rn |
00:55:14 | Aareon | Getting pretty close to having the base of the lexer written. From there I'll start knocking out the "TODO"s |
00:58:59 | * | zama joined #nim |
01:20:22 | * | theelous3_ quit (Ping timeout: 250 seconds) |
01:32:30 | * | dorei quit () |
01:41:37 | FromGitter | <gogolxdong> How to use nimscript as shell? |
01:48:43 | shashlick | Someone had written a shell using Nim |
01:50:35 | shashlick | Aareon: what's yours goal with this project |
01:54:41 | Aareon | To bootstrap Nim using Python. Possibly transpile Python to Nim at some point in the future. |
01:55:03 | Aareon | shashlick: |
01:57:16 | * | Snircle quit (Quit: Textual IRC Client: www.textualapp.com) |
02:00:19 | shashlick | Can you explain how one leads to the other? |
02:01:29 | Aareon | shashlick: Python allows taking a code object (see: programmatically compiled source) and generating an AST from said code object. From there it should be trivial to convert it to a Nim AST. Though, I might have to leverage a couple of libs/python's type annotations to handle casting |
02:02:20 | shashlick | Have u seen https://github.com/metacraft-labs/py2nim |
02:03:57 | * | Aareon_ joined #nim |
02:06:18 | * | rockcavera quit (Remote host closed the connection) |
02:08:37 | Aareon_ | I *have* seen it, but this lib is more geared towards bootstrapping Nim. The functionality to manipulate ASTs is just a plus. Also, that lib uses type inference, while my lib will use Pythons type annotations. Essentially creating a typed version of Python without creating a whole implementation |
02:10:20 | shashlick | cool |
02:14:31 | * | rockcavera joined #nim |
02:43:04 | Aareon | oh, buddy. trying to represent Nims types in Python is super fun... guess I'll just risk misrepresenting types for now until I know it breaks something. |
02:43:14 | * | endragor joined #nim |
02:43:41 | Aareon | doing my absolute best to import nothing, so that one could bootstrap with a clean python install |
02:46:29 | shashlick | pure python modules should be usable |
02:50:39 | Aareon | Especially useful on clean Linux systems with only the system Python installed. |
03:05:11 | * | banc quit (Quit: ZNC - http://znc.in) |
03:08:48 | * | smt joined #nim |
03:20:28 | * | chemist69 quit (Ping timeout: 264 seconds) |
03:21:18 | * | chemist69 joined #nim |
03:23:32 | * | banc joined #nim |
03:24:53 | * | Aareon quit (Ping timeout: 256 seconds) |
03:25:17 | * | kapil____ joined #nim |
03:29:00 | Aareon_ | shashlick: usable, yes. But there aren't any that I'm aware of right now that would help me with typing |
03:33:48 | * | vlad1777d quit (Ping timeout: 244 seconds) |
03:44:24 | * | dddddd quit (Remote host closed the connection) |
04:09:21 | * | UNIcodeX__ joined #nim |
04:12:07 | * | UNIcodeX_ quit (Ping timeout: 240 seconds) |
04:28:42 | * | chemist69 quit (Ping timeout: 264 seconds) |
04:30:30 | * | chemist69 joined #nim |
04:56:13 | * | fowl joined #nim |
05:23:12 | * | nsf joined #nim |
05:27:42 | * | leorize quit (Ping timeout: 252 seconds) |
05:53:24 | * | ftsf joined #nim |
05:54:23 | * | narimiran joined #nim |
05:56:56 | * | leorize joined #nim |
06:03:12 | * | shadowbane quit (Ping timeout: 252 seconds) |
06:03:47 | * | stefanos82 joined #nim |
06:07:45 | * | shadowbane joined #nim |
06:27:47 | * | endragor quit (Quit: Leaving...) |
06:38:45 | * | leorize quit (Ping timeout: 252 seconds) |
06:49:27 | * | shadowbane quit (Ping timeout: 240 seconds) |
06:50:52 | * | shadowbane joined #nim |
07:04:00 | * | narimiran quit (Ping timeout: 250 seconds) |
07:21:10 | FromDiscord_ | <π Aareon π³> This whole thing is in dire need of a massive refactoring https://github.com/Aareon/py-nim/tree/lexer-impl-patch-1/compiler |
07:23:01 | FromDiscord_ | <π Aareon π³> probably near the single-most badly optimized libraries I've ever written. For sanities sake, though, the initial write-up needs to be written like this so that I can get sort of general idea of how I want it to work |
07:23:23 | * | Ils joined #nim |
07:27:59 | * | Ils quit (Ping timeout: 256 seconds) |
07:29:16 | * | krux02 joined #nim |
07:30:38 | * | smt quit (Read error: Connection reset by peer) |
07:31:00 | * | leorize joined #nim |
07:49:03 | FromGitter | <narimiran> "I'll push my v19.2 branch tomorrow" nice! v0.19.2, codename: hacktoberfest |
07:58:03 | * | ftsf quit (Quit: Leaving) |
08:06:16 | * | Ils joined #nim |
08:07:37 | * | PMunch joined #nim |
08:10:29 | * | Ils quit (Ping timeout: 256 seconds) |
08:18:35 | FromGitter | <alehander42> Aaeron, so you're trying to use Nim more like a backend for a subset of Python code? |
08:19:35 | FromGitter | <alehander42> yeah, that wasn't exactly the plan for py2nim, I feel like nim is a better "typed version of Python" than python with some mypy |
08:19:50 | FromGitter | <alehander42> but it was in the plans to eventually support type annotations too |
08:20:00 | * | ng0 quit (Read error: Connection reset by peer) |
08:20:26 | FromGitter | <alehander42> the problem is they weren't very mainstream yet: there weren't so many annotations for 3rd party libs compared to ex definitely-typed |
08:20:45 | * | ng0 joined #nim |
08:22:17 | FromGitter | <alehander42> Araq, I tried to grep for those, trust me :D |
08:24:15 | Araq | nimgrep --recursive --ext:nim genericAssign lib/system |
08:24:21 | * | kapil____ quit (Quit: Connection closed for inactivity) |
08:27:08 | * | kapil____ joined #nim |
08:34:52 | FromGitter | <alehander42> hm |
08:42:31 | FromGitter | <gogolxdong> Is ArrayMancer going to use Vulkan as GPU backend? |
08:43:35 | FromGitter | <narimiran> @mratsim ^ |
08:44:57 | FromGitter | <gogolxdong> and anyone setup Vulkan SDK ? got a cmake error, don't understand how to do next. |
08:50:59 | * | floppydh joined #nim |
09:03:08 | FromGitter | <tim-st> Araq: this code has several things that shouldnt compile, which code did you mean should compile by this? https://github.com/nim-lang/Nim/issues/9567 |
09:04:43 | FromGitter | <tim-st> when I change the `e` in this code to `enums` no "errors not detected in when" problem happens again also in latest devel |
09:07:53 | Araq | you need to read the spec about how this is supposed to work |
09:08:08 | Araq | which is overly terse but it's a starting point |
09:08:39 | Araq | the 'mixin e' tells the compiler to shut up and assume 'e' will exist at instantion time |
09:08:47 | FromGitter | <tim-st> Araq: the last line shouldnt compile definetly because it's an overload for a proc that is mssing in this code |
09:09:17 | Araq | huh? |
09:10:11 | FromGitter | <tim-st> result.add(e.enumToString) |
09:11:09 | FromGitter | <tim-st> also should it shut up when it's not sure that `ord` is defined? |
09:11:19 | FromGitter | <tim-st> I meant `low` |
09:12:50 | FromGitter | <tim-st> when you edit the example to what you think should work (at least without the last for loop) then I think the last problem with `when` errors applies to this mixin code again |
09:13:06 | * | petersjt014[m] quit (Remote host closed the connection) |
09:13:09 | * | xylef quit (Remote host closed the connection) |
09:13:14 | * | dyce[m] quit (Remote host closed the connection) |
09:13:17 | * | hohlerde quit (Remote host closed the connection) |
09:13:17 | * | syntonym[m]1 quit (Remote host closed the connection) |
09:13:17 | * | TheKing[m] quit (Remote host closed the connection) |
09:13:18 | * | bitstoppa[m] quit (Remote host closed the connection) |
09:13:19 | * | Miguelngel[m] quit (Read error: Connection reset by peer) |
09:13:19 | * | planetis[m] quit (Read error: Connection reset by peer) |
09:13:19 | * | Connor[m]1 quit (Read error: Connection reset by peer) |
09:13:19 | * | sg-james[m] quit (Read error: Connection reset by peer) |
09:13:20 | * | GitterIntegratio quit (Remote host closed the connection) |
09:13:20 | * | TheManiac[m] quit (Remote host closed the connection) |
09:13:20 | * | yglukhov[m] quit (Remote host closed the connection) |
09:13:22 | * | zacharycarter[m] quit (Remote host closed the connection) |
09:13:24 | * | pqflx3[m] quit (Read error: Connection reset by peer) |
09:13:24 | * | toofly[m] quit (Remote host closed the connection) |
09:13:25 | * | xomachine[m] quit (Remote host closed the connection) |
09:13:26 | * | notbot[m] quit (Write error: Connection reset by peer) |
09:13:26 | * | zielmicha[m] quit (Remote host closed the connection) |
09:13:27 | * | k0mpjut0r quit (Remote host closed the connection) |
09:13:27 | * | macsek1911[m] quit (Read error: Connection reset by peer) |
09:13:27 | * | MrAxilus[m] quit (Write error: Connection reset by peer) |
09:13:28 | * | gh0st[m]1 quit (Remote host closed the connection) |
09:13:29 | * | Demos[m] quit (Remote host closed the connection) |
09:13:29 | * | endes[m] quit (Remote host closed the connection) |
09:13:29 | * | sendell[m] quit (Remote host closed the connection) |
09:13:30 | * | SolitudeSF[m] quit (Remote host closed the connection) |
09:13:30 | * | codevance[m] quit (Remote host closed the connection) |
09:13:30 | * | narimiran[m] quit (Write error: Broken pipe) |
09:13:30 | * | monofuel[m] quit (Remote host closed the connection) |
09:13:30 | * | stisa[m] quit (Remote host closed the connection) |
09:13:30 | * | spymasterd[m] quit (Remote host closed the connection) |
09:13:30 | * | jaens[m] quit (Remote host closed the connection) |
09:13:37 | leorize | matrix spam |
09:14:35 | FromGitter | <tim-st> hm, interesting now it seems to detect, maybe vscode problems |
09:16:18 | FromGitter | <tim-st> no, it was a problem I add the code to `when` issues |
09:16:50 | * | masterdonx quit (K-Lined) |
09:19:49 | FromGitter | <narimiran> aaaaaaand, finally did my hacktoberfest! |
09:20:04 | PMunch | Nice |
09:20:07 | FromGitter | <narimiran> 31 PRs in 31 days! (all nim-related) |
09:20:17 | PMunch | What :S |
09:20:26 | FromGitter | <narimiran> https://hacktoberfest.digitalocean.com/stats/narimiran |
09:20:28 | PMunch | That's just crazy |
09:20:36 | FromGitter | <narimiran> where are my 6.2 t-shirts? :D |
09:21:10 | FromGitter | <alehander42> Araq, I'll add a `[]`(PNode, PNode) , stuff like `$1[$3]` is literally everywhere |
09:22:30 | FromGitter | <alehander42> locally* |
09:22:35 | * | dyce[m] joined #nim |
09:26:13 | FromGitter | <narimiran> PMunch: i remember when i started and after my first PR i thought "where the hell will i find four more PRs?" :D |
09:33:30 | PMunch | Yeah, my fifth was by far the hardest |
09:33:53 | PMunch | I have so many of my own projects, but I didn't want to just create a PR out of something that I would normally do as a regular push |
09:33:54 | * | Connor[m] joined #nim |
09:33:54 | * | Demos[m] joined #nim |
09:33:55 | * | TheKing[m] joined #nim |
09:33:55 | * | xylef joined #nim |
09:33:55 | * | codevance[m] joined #nim |
09:33:55 | * | gh0st[m] joined #nim |
09:33:56 | * | sendell[m] joined #nim |
09:33:56 | * | notbot[m] joined #nim |
09:33:56 | * | k0mpjut0r joined #nim |
09:33:56 | * | GitterIntegratio joined #nim |
09:34:01 | * | bitstoppa[m] joined #nim |
09:34:01 | * | zacharycarter[m] joined #nim |
09:34:01 | * | endes[m] joined #nim |
09:34:02 | * | SolitudeSF[m] joined #nim |
09:34:02 | * | TheManiac[m] joined #nim |
09:34:02 | * | hohlerde joined #nim |
09:34:02 | * | pqflx3[m] joined #nim |
09:34:02 | * | narimiran[m] joined #nim |
09:34:02 | * | xomachine[m] joined #nim |
09:34:02 | * | yglukhov[m] joined #nim |
09:34:02 | * | zielmicha[m] joined #nim |
09:34:02 | * | Miguelngel[m] joined #nim |
09:34:02 | * | macsek1911[m] joined #nim |
09:34:02 | * | spymasterd[m] joined #nim |
09:34:03 | * | petersjt014[m] joined #nim |
09:34:03 | * | monofuel[m] joined #nim |
09:34:03 | * | jaens[m] joined #nim |
09:34:03 | * | stisa[m] joined #nim |
09:34:03 | * | toofly[m] joined #nim |
09:34:03 | * | syntonym[m] joined #nim |
09:34:03 | * | MrAxilus[m] joined #nim |
09:34:03 | * | sg-james[m] joined #nim |
09:34:04 | * | planetis[m] joined #nim |
09:44:26 | FromGitter | <alehander42> Araq, does `$#` actually mean anything in fmt |
09:44:29 | FromGitter | <alehander42> in addf |
09:45:04 | FromGitter | <alehander42> ah it mean the `#` means stuff |
09:45:05 | FromGitter | <alehander42> ok |
09:45:39 | FromGitter | <alehander42> nvm |
09:47:05 | Araq | :-) |
09:47:47 | * | dom96_w joined #nim |
09:48:54 | * | livcd quit (Ping timeout: 244 seconds) |
09:49:55 | Araq | I pushed araq-version-0-19-2 |
09:50:16 | Araq | branch, commits that contain [backport] should be cherrypicked on top of this branch to give us 0.19 |
09:50:21 | Araq | *0.19.2 |
09:50:57 | * | livcd joined #nim |
09:51:00 | Araq | keep in mind that October is not yet over |
09:52:54 | PMunch | Nice, now my nimlsp is able to communicate with the Sublime LSP client to do a proper shutdown, meaning I can just trigger a restart while working on it :) |
09:57:57 | FromGitter | <alehander42> this makes my sublime happy :D |
10:08:27 | * | mech422__ quit (Ping timeout: 240 seconds) |
10:10:22 | FromGitter | <alehander42> man result = result = x really frustrated nim |
10:12:10 | * | opi_ quit (Quit: ZNC - http://znc.in) |
10:12:49 | * | opi_ joined #nim |
10:24:15 | * | mech422 joined #nim |
10:26:37 | * | livcd quit (Changing host) |
10:26:37 | * | livcd joined #nim |
10:30:11 | * | mech422_ joined #nim |
10:30:14 | * | mech422 quit (Ping timeout: 244 seconds) |
10:31:00 | FromGitter | <narimiran> Araq: any idea what is causing AppVeyor to constantly throw "Command exited with code 1" after "PASS: xmltree.nim C "? this happens in lots of PRs that i've seen |
10:32:08 | Araq | timeouts |
10:32:26 | * | platoff joined #nim |
10:33:49 | FromGitter | <narimiran> any remedy for this? or just restart and hope for the best? |
10:34:22 | Araq | well with every shrinking of the testS it should happen less and less often |
10:43:08 | FromGitter | <narimiran> ok, but i've been seeing it more and more lately |
10:43:39 | FromGitter | <narimiran> re: 0.19.2 branch β you're doing cherry-picking yourself? do you need some help from others? |
10:44:12 | Araq | I'd like others to take over |
10:45:17 | FromGitter | <narimiran> ok, so we should go through the remaining 255 commits and see which ones don't introduce new features? or what is the procedure? |
10:48:37 | Araq | 255 commits? oh my... |
10:49:08 | Araq | well I thought shashlick or you would start by creating a little Nim program that does the cherry-picking based on [backport] |
10:49:11 | * | Snircle joined #nim |
10:50:12 | Araq | commit that contain "fixes" also are candidates but compiler bugfixes are the most frequent cause for regressions |
10:50:22 | Araq | stdlib fixes are usually ok |
10:50:31 | Araq | except the ones that touch system.nim |
10:50:55 | FromGitter | <narimiran> but currently there is only one commit (yours) that has [backport] tag? :D that might be good idea for some future release, but currently it seems we need to go manually one by one |
10:51:26 | Araq | well you can do some filtering and then do the manual thing |
10:51:34 | Araq | and there are more commits with [backport] |
10:51:38 | Araq | than just one. |
10:53:46 | FromGitter | <narimiran> ok, i'll think a bit about the best tactic to tackle this |
10:54:22 | * | kapil____ quit (Quit: Connection closed for inactivity) |
10:56:05 | Araq | thank you |
10:56:28 | Araq | if in doubt, leave it out |
10:56:37 | Araq | every fix can also be another regression :P |
11:00:27 | FromGitter | <narimiran> eh, where's your adventurous spirit? just merge everything and worry about it later :P :D |
11:01:01 | Araq | oh and also merge the nimpretty fixes, we can then say 0.19.2 is just a bugfix release but nimpretty is usable now |
11:01:14 | FromGitter | <narimiran> will do |
11:01:17 | Araq | bbl |
11:12:47 | * | PMunch quit (Ping timeout: 240 seconds) |
11:12:54 | FromGitter | <narimiran> question for people with more experience in git: cherry-picking produces different git SHA than the one in the devel branch. that means that that devel branch and 0.19.2 branch would more and more diverge, right? (e.g. 250 commits behind, 150 commits ahead; instead of 100 commits behind) |
11:13:31 | * | dddddd joined #nim |
11:28:43 | * | endragor joined #nim |
11:29:00 | FromGitter | <alehander42> hm, not sure about it, but what would be the process of refix-ing 0.19 for users using the old version ? choosenim, or cloning a new tag/branch? |
11:32:56 | FromGitter | <narimiran> also, how would you later (easily) find which commits were *not* cherry picked? |
11:33:46 | FromGitter | <narimiran> once again, my git-knowledge is limited, but i don't think that cherry-picking now is the best choice |
11:34:07 | * | mech422_ quit (Ping timeout: 240 seconds) |
11:39:50 | * | mech422 joined #nim |
11:44:32 | * | PMunch joined #nim |
11:49:14 | * | platoff quit (Read error: Connection reset by peer) |
11:56:44 | PMunch | Can I shadow a variable in a template? |
11:57:39 | PMunch | I want to have a template that checks if a type matches the pattern for a distinct type I've made and cast it to that distinct type within a scope |
11:59:02 | PMunch | I tried a trivial "var input = TestType(input)" but that yielded the error: "Error: inconsistent typing for reintroduced symbol 'y': previous type was: JsonNode; new type is: TestType" |
12:02:19 | PMunch | Ah never mind |
12:02:47 | PMunch | I did name.mytemplate, which means Nim needs to typecheck name |
12:15:30 | FromGitter | <narimiran> Araq: i've just sent you PM on gitter regarding 0.19.2, so take a look when you'll have time.... |
12:16:56 | * | smt joined #nim |
12:27:49 | * | Yardanico quit (Quit: Quitting) |
12:56:38 | * | smt quit (Read error: Connection reset by peer) |
13:00:53 | * | PMunch quit (Ping timeout: 245 seconds) |
13:03:40 | FromGitter | <kaushalmodi> I'd suggest to just do a quick 0.20 release and adopt a master/devel branch model going forward. |
13:06:23 | Araq | the problem is that devel has a compiler refactoring that is important but produced serious regressions |
13:06:23 | Araq | so then for 0.19.2 we would need to address these regressions first |
13:06:23 | Araq | and that's what we kept doing before, it meant releases could be done every 6 months or so |
13:07:11 | Araq | we cannot keep doing what we did and expect different outcomes |
13:07:48 | Araq | but we can maybe do something different than cherry-picking, but my git knowledge is insufficient |
13:08:07 | FromGitter | <kaushalmodi> Hmm, but may be sticking to a strict master/devel model would help |
13:08:20 | FromGitter | <kaushalmodi> So that you don't need to do manual cherry picking |
13:08:47 | FromGitter | <kaushalmodi> Commit changes for next minor release to master and quickly merge to devel |
13:09:02 | Araq | well the "manual" will only be done for 0.19.2, I think in the long run the [backport] tag will work out just fine |
13:10:02 | FromGitter | <kaushalmodi> That tag won't be sustainable |
13:10:13 | FromGitter | <kaushalmodi> You will need to deal with merge issues |
13:11:22 | FromGitter | <kaushalmodi> With the commit to master -> devel model, you amortize the merge issues into manageable ones instead of having to deal with proper merging of hundreds of commits in one go |
13:12:26 | Araq | doesn't feel natural for me, for me development happens in devel and some changes are worth backporting/cherry-picking, I don't want to manually merge master into devel all the time |
13:12:43 | FromGitter | <kaushalmodi> Create an alias :) |
13:13:32 | * | nc-x joined #nim |
13:13:57 | FromGitter | <kaushalmodi> I'm sharing this based on my observation of successful projects like emacs and org mode. This model just works like a clockwork |
13:14:32 | * | CcxWrk quit (Ping timeout: 244 seconds) |
13:18:35 | * | Yardanico joined #nim |
13:29:28 | * | endragor quit (Remote host closed the connection) |
13:29:57 | * | endragor joined #nim |
13:30:31 | Araq | it's not clear to me "works great for emacs" is applicable |
13:31:10 | Araq | Emacs doesn't switch its Lisp implementation from version to version, for example |
13:31:30 | Araq | Nim might change its default GC implementation, for example |
13:32:09 | FromGitter | <kaushalmodi> Emacs has many new breaking features |
13:32:24 | Araq | https://devguide.python.org/committing/#backporting-changes-to-an-older-version |
13:32:32 | FromGitter | <kaushalmodi> Current master has inbuilt bignum support |
13:33:03 | FromGitter | <kaushalmodi> But those commits don't happen to the "stable" branch |
13:33:32 | * | vlad1777d joined #nim |
13:33:36 | FromGitter | <kaushalmodi> Only bug fixes and doc fixes happen to stable and get merged to master |
13:34:18 | FromGitter | <kaushalmodi> The point of this model is to allow breaking changes and fixes happen in parallel branches |
13:34:44 | FromGitter | <kaushalmodi> Travis will do the checks in both branches all the time |
13:34:46 | * | endragor quit (Ping timeout: 268 seconds) |
13:35:08 | FromGitter | <kaushalmodi> So you have better confidence in cutting a release out of the stable branch |
13:36:02 | FromGitter | <kaushalmodi> May be this chat is not efficient in explaining the benefits of this model. I don't know, would a voice chat help? |
13:37:49 | FromGitter | <kaushalmodi> Backporting is different than committing to a stable branch |
13:39:00 | FromGitter | <kaushalmodi> Backporting would be for one off scenarios where say you found a security issue in a really old Nim version and you need to cherry pick that fix from current version to that old version |
13:39:51 | * | smt joined #nim |
13:43:00 | Araq | I think I understand but the prospect of having to switch between 2 branches all the time makes me nervous |
13:43:34 | Araq | when I work with feature branches I always get conflicts... |
13:43:53 | * | endragor joined #nim |
13:44:25 | * | narimiran joined #nim |
13:44:39 | Araq | and this is not just my personal problem, I know other Nim core devs with the same problem |
13:48:18 | * | endragor quit (Ping timeout: 252 seconds) |
13:50:02 | * | PMunch joined #nim |
13:50:54 | Araq | can you explain to me again why cherry-picking is a bad idea? |
13:54:21 | * | smt quit (Ping timeout: 252 seconds) |
13:59:50 | * | CcxWrk joined #nim |
14:00:01 | FromGitter | <kaushalmodi> It's a time waste to manually cherry pick. And the merging of [backport] tagged commits won't be always smooth. It also isn't an expandable model. |
14:00:51 | FromGitter | <kaushalmodi> With the branch model, you can have master, devel, and even next branches |
14:01:20 | FromGitter | <kaushalmodi> Commits to master waterfall to devel, and further to next. |
14:01:38 | FromGitter | <kaushalmodi> You don't need to manually track which commits to backport where. |
14:01:59 | FromGitter | <kaushalmodi> By "waterfall", I mean merging |
14:02:03 | copygirl | Nawwh. So now I actually got `string` as typed and comparing it with the `string` symbol I already have with either `==` or `sameType` doesn't work :o |
14:02:17 | * | CcxWrk quit (Excess Flood) |
14:03:17 | nc-x | Also you shouldn't expect contributors to know which commits should have `backport` in the commit message, and then they should not be required to amend their commits just to modify the commit message. It will only add friction to the development process.. |
14:04:23 | Araq | we review every PR already |
14:04:38 | Araq | we are editing the commit message already |
14:04:40 | * | CcxWrk joined #nim |
14:04:47 | Araq | at least I do. |
14:04:52 | narimiran | what about different commit hashes when cherry picking? |
14:05:12 | * | Vladar joined #nim |
14:05:25 | Araq | what about them? for me a commit hash has no inherent meaning |
14:05:41 | FromGitter | <alehander42> woudln't this break git history |
14:06:19 | Araq | which history? afaict people love to pretend there isn't any and it's all linear |
14:06:33 | narimiran | as i said earlier: instead of two branches becoming more similar, they would be more and more different |
14:06:59 | FromGitter | <alehander42> well, how are the changes ported, aren't they force-pushed onto the 0.19 branch |
14:07:07 | FromGitter | <alehander42> maybe it doesn't matter indeed |
14:07:12 | narimiran | you are now 250 commits behind, you cherry-pick 50 commits, you are NOT now 200 commits behind, you are "250 commits behind, 50 commits ahead" |
14:07:15 | FromGitter | <alehander42> i am not sure how this works, just asking sorry |
14:09:14 | Araq | maybe we should switch to Darcs or something |
14:10:48 | * | Jesin quit (Quit: Leaving) |
14:12:29 | Araq | and how exactly does this "this PR should have been against master" vs "this PR should have been against devel" NOT manual? |
14:13:44 | FromGitter | <kaushalmodi> This model will of course take a bit of time to propagate. |
14:14:11 | FromGitter | <kaushalmodi> PR submitters should well be aware if their commit is a feature vs bug fix/doc |
14:14:26 | FromGitter | <kaushalmodi> It's not too difficult the distinguish between the two |
14:15:15 | Araq | sure but it's not to difficult to cherry pick commits that contain "fixes #" in them either |
14:16:20 | FromGitter | <kaushalmodi> "fixes #" could be a new feature too |
14:16:48 | Araq | you use the github API to lookup the tags attached to #xyz |
14:17:36 | FromGitter | <kaushalmodi> well, it just seems this flow is easy to break and it's a lot of work on your part |
14:18:05 | Araq | I suppose it's a somewhat philosophical issue, do we want to work with git or do we pretend git doesn't exist. I know I'm a happy man with the latter. |
14:18:15 | FromGitter | <kaushalmodi> with master/devel branch flow if someone submits a PR on wrong branch, you just ask them to rebase off the right branch |
14:18:26 | FromGitter | <kaushalmodi> seasoned committers will "get this" in a week or so |
14:18:49 | Araq | as I said, every bugfix has the inherent danger of producing a regression so if we're after stability, "if in doubt, leave it out" |
14:19:20 | Araq | so every model where ALL bugfixes go to stable is broken. |
14:20:09 | Araq | and if we are not after a "stable" branch we can continue to do as we do today, everything ends up in devel |
14:20:20 | shashlick | Branching is not zero effort, will require some manual patching |
14:20:25 | shashlick | But it isn't rocket science |
14:20:30 | shashlick | People do it all the time |
14:20:49 | Araq | the concious breaking changes are NOT our problem wrt Nim's QA |
14:21:14 | Araq | *conscious |
14:22:18 | FromGitter | <kaushalmodi> > so every model where ALL bugfixes go to stable is broken β β I didn't mean "all bugfixes" |
14:22:30 | FromGitter | <kaushalmodi> stable branch will only have regression bug fixes |
14:22:37 | FromGitter | <kaushalmodi> no software is bug-free |
14:23:22 | Araq | well my point is, no matter what we choose, it's always semi-automated |
14:23:51 | FromGitter | <kaushalmodi> yes, but with branch model, most of the responsibility shifts to the committer |
14:23:54 | FromGitter | <kaushalmodi> PR submitter |
14:24:18 | * | abm joined #nim |
14:24:18 | FromGitter | <kaushalmodi> you just police which commit goes where (you will need to do this a lot in the beginnning, but it will pay off) |
14:24:34 | FromGitter | <kaushalmodi> it gets easy once all Nim repo committers are onboard with this model |
14:24:48 | FromGitter | <kaushalmodi> then at the time of release, you Just Release |
14:25:05 | Araq | we need to police anyway, the question is, isn't a [backport] commit message much easier |
14:25:11 | * | CcxWrk quit (Quit: ZNC 1.7.1 - https://znc.in) |
14:25:25 | FromGitter | <kaushalmodi> we get back to the point on amortizing merge conflicts |
14:25:34 | FromGitter | <alehander42> hm |
14:26:08 | FromGitter | <kaushalmodi> with master/devel model, once a commit gets onto master, it just lives there, without any need of tending to future merge conflicts |
14:26:12 | * | CcxWrk joined #nim |
14:26:16 | FromGitter | <kaushalmodi> you deal with that only when submitting PR |
14:26:26 | FromGitter | <kaushalmodi> ..and.. the PR submitter has to deal with that |
14:26:31 | Araq | I can always "just release" when the stable branch wasn't hijacked somehow |
14:27:07 | FromGitter | <kaushalmodi> well, I rest my case |
14:28:18 | FromGitter | <alehander42> what are the models usually used by other active languages ? |
14:29:22 | FromGitter | <kaushalmodi> @krux02 About your Macro tutorial, I have an important suggested fix |
14:29:37 | FromGitter | <kaushalmodi> > "With Great Power Comes Great Responsibility." -- Spider Man β β "With Great Power Comes Great Responsibility." -- Spider Man's uncle |
14:30:07 | krux02 | yes |
14:30:41 | FromGitter | <kaushalmodi> hehe |
14:30:44 | FromGitter | <alehander42> Araq, to add another pass, do I need to to anyting else than main.nim |
14:31:16 | Araq | "Homer, here is somebody who can help you" - "Batman?" - "No, he is a scientist" - "Batman IS a scientist." - "It is not Batman." |
14:31:36 | Araq | might also fit :P |
14:32:28 | * | CcxWrk quit (Max SendQ exceeded) |
14:33:37 | * | CcxWrk joined #nim |
14:34:55 | * | CcxWrk quit (Excess Flood) |
14:35:44 | FromGitter | <kaushalmodi> Araq: can you please look at this issue? https://github.com/nim-lang/Nim/issues/9450 |
14:35:57 | FromGitter | <kaushalmodi> it's preventing me from using a global config.nims |
14:39:05 | copygirl | https://gist.github.com/copygirl/60d5446bdcfe305d70a2c17a8c199790#file-either-nim-L128 So I'm still having a problem here: `sameType` doesn't seem to be returning true here. I have a symbol `string` which I compare to the type of a "case field", whose symbol also reports as being `string`. |
14:40:08 | copygirl | I suppose I'm using `sameType` wrong here, but I'm not entirely sure how. |
14:40:48 | shashlick | I propose a simple model - when a PR is ready to be merged into devel, the merger decides whether it belongs in stable and annotates accordingly |
14:41:07 | FromGitter | <kaushalmodi> Araq: Another side effect of using a global config.nims is that while `nim js ..` works, `nim js -d:nodejs ..` fails with: β β ```code paste, see link``` [https://gitter.im/nim-lang/Nim?at=5bd9bf026ab3f85bdde15d67] |
14:41:08 | shashlick | Person responsible for stable will pull it into stable and push |
14:41:27 | shashlick | Handle any conflicts |
14:42:26 | FromGitter | <kaushalmodi> note that that happens even with an empty config.nims |
14:42:46 | Aareon_ | @alehander2 responded to your comment on the Py-nim issue |
14:43:43 | Araq | alehander42: no. |
14:53:44 | * | Aareon_ quit (Ping timeout: 250 seconds) |
14:55:25 | FromGitter | <alehander42> yeah, I already have my new pas |
14:55:26 | FromGitter | <alehander42> s |
14:56:20 | * | Aareon_ joined #nim |
15:00:58 | FromGitter | <alehander42> i am stupid |
15:01:53 | * | nsf quit (Quit: WeeChat 2.2) |
15:04:07 | * | narimiran quit (Remote host closed the connection) |
15:11:46 | FromGitter | <alehander42> ok, so whatever I do, if I add a pass and register it with registerPass, (even with dummy myProcess etc), I get a random `undeclared identifier: 'echo'` |
15:12:10 | FromGitter | <alehander42> I suspect that after a module is compiled, somehow my pass erases internal state in the graph and the next module fails here |
15:12:16 | FromGitter | <alehander42> but I have no idea why |
15:12:51 | * | vlad1777d quit (Ping timeout: 244 seconds) |
15:13:55 | * | NimBot joined #nim |
15:14:16 | * | nc-x quit (Quit: Page closed) |
15:27:21 | FromGitter | <alehander42> for some reason, myClose in sem comes very soon right after myProcess |
15:27:33 | FromGitter | <alehander42> maybe I am returning nil in my pass and this makes it stop |
15:28:22 | FromGitter | <alehander42> yes! |
15:28:24 | FromGitter | <alehander42> fuck |
15:28:31 | FromGitter | <alehander42> this was obvious probably |
15:39:09 | Aareon_ | @alehander2 I appreciate your interest in the project. Its not often that I spend hours upon hours on something and see any interest from anyone else |
15:39:43 | * | nc-x joined #nim |
15:43:53 | Aareon_ | Just realized that it was alehander42 lol |
15:52:31 | * | nc-x quit (Quit: Page closed) |
15:52:52 | FromGitter | <alehander42> haha np |
15:53:33 | FromGitter | <alehander42> well, a new impl of the nim compiler is a big, but cool undertaking |
15:54:19 | Aareon_ | Ofc. And it'll obviously be slow. This undertaking is hugely influenced by my desire to write my own language |
15:54:37 | FromGitter | <alehander42> I think you might underestimate a bit the size of the task: also, a clean rewrite might deal in a better way with a lot of features, which slowly evolved in the current compiler |
15:55:34 | FromGitter | <alehander42> I am sure if Araq could rewrite the compiler, it would look at least a bit differently today |
15:56:55 | FromGitter | <alehander42> but writing your own lang is always a cool thing to do, I think even implementing a subset of an existing lang would be enough to make it easier to write new one-s for you |
15:57:14 | FromGitter | <zacharycarter> Aareon_: Not sure how much experience you have writing interpreters and compielrs |
15:57:17 | FromGitter | <zacharycarter> compilers* |
15:57:32 | FromGitter | <zacharycarter> but as @alehander42 pointed out - it's not the least bit trivial |
15:57:47 | FromGitter | <zacharycarter> and I would think that to try to start with something as complex as Nim - might be the wrong way to pursue that learning |
15:58:03 | FromGitter | <zacharycarter> I could make another recommendation if you're at all interested - but if you're set on your idea - I respect that too and hope you make it happen :) |
15:58:17 | FromGitter | <zacharycarter> I have no idea what experience you have in this realm |
15:59:10 | * | PMunch quit (Quit: Leaving) |
16:00:12 | Aareon_ | I have a fair bit of knowledge. I think the main reason why I dont have a problem trying to implement a language as complex as Nim is that my own language is supposed to be complex. And I'm in no real rush to finish, so I'm just taking my time, learning what I can, and doing it to the best of my ability |
16:00:29 | FromGitter | <zacharycarter> well - I just mean - it's like jumping off a cliff |
16:00:34 | FromGitter | <zacharycarter> instead of climbing up it from the bottom |
16:00:39 | FromGitter | <zacharycarter> if you ask me |
16:01:01 | FromGitter | <zacharycarter> I plan on learning a bit about interpreters and compilers as well - but my plan of attack is first to write my own FORTH interpreter |
16:01:06 | Aareon_ | I'm all ears if youve got suggestions, ofc |
16:01:22 | FromGitter | <zacharycarter> Jones Forth is a great starting point for learning about how to write an interpreter |
16:01:41 | FromGitter | <zacharycarter> I have some other resources I've saved on github - one moment please |
16:03:11 | FromGitter | <zacharycarter> https://github.com/munificent/craftinginterpreters - is one - this book is WIP but has a lot of good content |
16:03:14 | Aareon_ | Dont get me wrong. I'm not necessarily new to interpreters or compilers. A huge challenge in itself is implementing a lower level language in a higher level one. Its possible, and I want to be able to say that ive done it. |
16:03:32 | Aareon_ | I have read a decent portion of that book. |
16:03:33 | Araq | narimiran: ok, so ... I dunno try what kaushalmodi suggests and use devel for 0.19.2 but undo cooldome's compiler refactorings? no idea really |
16:03:36 | FromGitter | <zacharycarter> https://github.com/mcilloni/fork |
16:03:44 | Aareon_ | As well as ybe dragon book as well |
16:03:46 | FromGitter | <zacharycarter> ah okay |
16:03:54 | Araq | I might as well just try to fix these regressions |
16:04:00 | FromGitter | <alehander42> well, my note is more related to the fact that you need to learn Nim very well, especially the type system / newer destructor/gc etc stuff if you want to reimplement them |
16:04:46 | Aareon_ | That's true. I'm sort of learning the dirty lang-metal stuff as I go. |
16:05:09 | FromGitter | <alehander42> with which I mean, to reimplement them in a more elegant way if possible, as this is the big + of a rewrite |
16:06:28 | Aareon_ | Ofc. My plan is to do a dirty write up that passes tests, document it, then optimize |
16:06:51 | Araq | pick easy tests |
16:07:04 | Araq | Nim's testsuite is full of brutal tests that make me cry |
16:07:49 | FromGitter | <alehander42> e.g. you can also take a lot of different decisions than the current codebase, e.g. currently Araq is adding incremental compilation , if you bake this req in your initial design, it would be probably easier to add etc |
16:08:26 | Aareon_ | Good idea |
16:11:50 | FromGitter | <zacharycarter> Since there are some folks interested in data science here - https://blogs.msdn.microsoft.com/uk_faculty_connection/2018/10/29/data-science-in-visual-studio-code-using-neuron-a-new-vs-code-extension/ |
16:12:01 | Araq | I'm still a believer of https://www.joelonsoftware.com/2000/04/06/things-you-should-never-do-part-i/ |
16:12:19 | Araq | so everything I want to do differently in the compiler is to be done as a compiler refactoring |
16:12:37 | Aareon_ | Lots of TODOs in the lexer impl rn. Once the write up is done, ill start pushing into a new branch |
16:12:43 | Araq | some of these refactorings can take months but in the end it's still much faster than starting from scratch |
16:13:05 | Araq | plus you always start with a system where the tests are green and can be kept green |
16:14:39 | Aareon_ | A huge thing for me is extensive documentation. I dont want to read the source to understand what it does if it's complicated, but feasible to summarize it. |
16:15:14 | FromGitter | <alehander42> yeah, the main nim impl can't be rewritten at this point |
16:15:45 | * | wildlander joined #nim |
16:16:32 | Aareon_ | I guess we'll see how it goes. One step at a time. |
16:19:10 | Aareon_ | 1: impl lexer (and helpers/and procs it requires) that passes tests. |
16:19:11 | Aareon_ | 2: document |
16:19:11 | Aareon_ | 3: clean up/optimize (without failing tests) |
16:24:46 | * | seni joined #nim |
16:33:42 | FromGitter | <alehander42> sounds good, another + I see is you can reuse this as a python lib for parsing/highlight nim code |
16:38:55 | FromGitter | <alehander42> ok I can generate JS files based on the new AST->AST |
16:39:09 | Araq | yeah alternative implementations are also awesome for Nim's spec |
16:39:26 | FromGitter | <alehander42> but currently I still support 5% of the nodes (and have to finish jsgen) this is a bigger change than I expected |
16:39:50 | Araq | sorry about that, but I think I told you |
16:40:05 | Araq | I started doing that with the C codegen and gave up :D |
16:40:47 | FromGitter | <alehander42> :D no, the renderer should be easy, renderers are always cute |
16:41:25 | FromGitter | <alehander42> it's just a lot of similar work for jsgen, but I think >half of it is done now |
16:42:24 | Araq | btw acceptance test is: Nimforum still works afterwards :P |
17:15:35 | * | floppydh quit (Quit: WeeChat 2.3) |
17:17:47 | * | masterdonx joined #nim |
17:18:50 | * | masterdonx quit (K-Lined) |
17:21:48 | * | Vladar quit (Remote host closed the connection) |
17:31:29 | Aareon_ | I just realized I could impl the token* templates. I have no plans rn to impl nimpretty/nimsuggest, so these can just do nothing for now |
17:36:28 | * | narimiran joined #nim |
17:40:54 | * | narimiran quit (Remote host closed the connection) |
17:41:15 | * | narimiran joined #nim |
17:48:44 | * | vivus joined #nim |
18:01:17 | * | nsf joined #nim |
18:04:44 | * | vivus quit (Remote host closed the connection) |
18:10:07 | * | theelous3_ joined #nim |
18:13:16 | * | dom96_w quit (Quit: My MacBook has gone to sleep. ZZZzzzβ¦) |
18:15:02 | * | elrood joined #nim |
18:15:03 | * | theelous3_ quit (Ping timeout: 252 seconds) |
18:16:05 | Araq | fwiw Python has this https://github.com/python/core-workflow/tree/master/cherry_picker |
18:18:31 | Aareon_ | Araq: for what? |
18:21:00 | Araq | for its development process |
18:22:28 | FromGitter | <kaushalmodi> Araq: koch testinstall is failing with these errors: https://api.travis-ci.org/v3/job/448979303/log.txt |
18:22:43 | FromGitter | <kaushalmodi> ```code paste, see link``` [https://gitter.im/nim-lang/Nim?at=5bd9f2f3b9c91919547e550c] |
18:22:44 | Aareon_ | Oh, for cherry picking a Python state at a specific commit? |
18:22:53 | FromGitter | <kaushalmodi> so nodejs is needed for running that? |
18:23:07 | FromGitter | <kaushalmodi> shouldn't that be optional? |
18:24:42 | Araq | well we need to test everything we can for a release build |
18:25:15 | Araq | the travis config should list node.js as a dependency |
18:26:03 | FromGitter | <kaushalmodi> I looked into that.. but am surprised |
18:26:16 | FromGitter | <kaushalmodi> nim-lang/Nim travis doesn't list nodejs as dep: https://github.com/nim-lang/Nim/blob/devel/.travis.yml |
18:27:11 | FromGitter | <kaushalmodi> so I am wondering how the tests pass on the Nim repo, but not on the "koch testinstall" on nightlies |
18:27:44 | * | narimiran quit (Remote host closed the connection) |
18:28:42 | Araq | I wondered the same and never found out |
18:31:58 | FromGitter | <kaushalmodi> Araq: the binary name is actually `node` and not `nodejs` on my system |
18:32:07 | FromGitter | <kaushalmodi> (though I have never used it) |
18:32:16 | Araq | I know and testament knows too |
18:32:39 | FromGitter | <kaushalmodi> the error says it looked for `nodejs` |
18:34:13 | FromGitter | <kaushalmodi> ok, the binary name is hardcoded: https://github.com/nim-lang/Nim/blob/313bbf5b9b1898fd7f6ec7378f71cfa06ffe52ec/testament/tester.nim#L357 |
18:36:46 | * | Aareon_ quit (Ping timeout: 260 seconds) |
18:36:53 | * | Aareon_ joined #nim |
18:37:21 | FromGitter | <mratsim> @gogolxdong @narimiran For Vulkan I donβt know, if there is a Vulkan Compute I would be interested to at least have a proof of concept but it seems to only allow shaders. |
18:38:10 | FromGitter | <mratsim> I will probably add AMD ROCm first, itβs easier to support as itβs more like Cuda. |
18:41:17 | * | kapil____ joined #nim |
18:46:33 | FromGitter | <kaushalmodi> Araq: If you look at that Travis log. something strange is happening: β β ```code paste, see link``` [https://gitter.im/nim-lang/Nim?at=5bd9f8895905a91955328f97] |
18:46:53 | FromGitter | <kaushalmodi> tests are running fine, but inbetween it somehow fails to find the node/nodejs/iojs binary |
18:47:49 | FromGitter | <kaushalmodi> The trusty Linux image used by default on Travis does have node installed by default: β β ```code paste, see link``` [https://gitter.im/nim-lang/Nim?at=5bd9f8d55760a73eb419a163] |
18:49:13 | * | a_b_m joined #nim |
18:49:16 | FromGitter | <kaushalmodi> > something strange is happening β β or may be not.. looks like only tashr.nim in that list is specifying JS backend |
18:49:18 | * | a_b_m quit (Client Quit) |
18:49:32 | FromGitter | <kaushalmodi> though, it's not clear why node is not found if trusty comes preinstalled with that |
18:50:08 | Araq | still trying to figure out what to do :P http://www.draconianoverlord.com/2013/09/07/no-cherry-picking.html |
18:50:22 | Araq | as usual, nobody agrees on git best practices |
18:51:52 | Araq | "git cherry-pick -x" an make the connection to the original commit |
18:51:54 | Araq | *can |
18:52:21 | * | abm quit (Ping timeout: 252 seconds) |
18:52:47 | FromGitter | <kaushalmodi> hmm, I am suggesting the branch model seeing on how smoothly the releases happen when using that |
18:55:35 | Aareon_ | Is the current Nim compiler a transpiled version of the Pas-Nim compiler |
18:57:04 | Aareon_ | ? |
18:57:36 | Araq | yeah and interestingly, it still shows |
18:58:10 | Aareon_ | Lol |
18:58:24 | Aareon_ | Well, it works |
18:58:43 | * | stefanos82 quit (Quit: Quitting for now...) |
18:58:44 | Araq | occasionally I remove some Pascal'isms |
19:01:10 | Araq | kaushalmodi: you model only supports having two different versions at the same time |
19:08:10 | FromGitter | <kaushalmodi> no |
19:08:43 | FromGitter | <kaushalmodi> see https://git.savannah.gnu.org/cgit/emacs.git/refs/ |
19:09:07 | FromGitter | <kaushalmodi> emacs-26, emacs-25, .. are cut off from master each time a major release happens |
19:09:22 | FromGitter | <kaushalmodi> the "master" on emacs would be the Nim "devel" |
19:10:30 | FromGitter | <kaushalmodi> using the branch model used in emacs, how it would work is: |
19:12:31 | FromGitter | <kaushalmodi> 1) do development on devel as we are already doing β 2) announce that you are planning to cut a release and stop accepting contribution to devel β 3) cut off a release branch, say "nim-0.20" β 4) then make commits only to that branch β 5) test it for a set amount of time, say a month? accept regression fixes, doc fixes on that branch, while all other contrib on devel branch ... |
19:12:31 | FromGitter | ... [https://gitter.im/nim-lang/Nim?at=5bd9fe9f995818347b815c97] |
19:13:17 | FromGitter | <kaushalmodi> 1) then finally do the actual release of Nim 0.20 |
19:13:56 | FromGitter | <kaushalmodi> now, if you need to make a Nim 0.20.1 release, commits for those will need to happen only to that nim-0.20 branch |
19:14:14 | FromGitter | <kaushalmodi> that way the big changes happening on devel don't impact the next minor release |
19:14:35 | Araq | step (2) is terrible for the contributor's motivation |
19:14:50 | FromGitter | <kaushalmodi> I rephrased (2) in (5_ |
19:14:52 | FromGitter | <kaushalmodi> (5) |
19:15:19 | FromGitter | <kaushalmodi> I meant to say that stop taking feature change commits on nim-0.20 once you announce that you are planning to release it in a month |
19:15:52 | FromGitter | <kaushalmodi> with feature change commits going to devel, people will know that those will be released in the next release (Nim 0.21) |
19:16:36 | FromGitter | <kaushalmodi> That "one month" time is just contrived, but you get it |
19:16:57 | FromGitter | <kaushalmodi> basically "some testing time" to add finishing touch to the to-be-released Nim version |
19:17:11 | FromGitter | <kaushalmodi> right now finishing touches + big changes happen to the same devel branch |
19:17:32 | FromGitter | <kaushalmodi> so we lose the distinction on what needs to be finished for release vs what will go into the next version |
19:19:57 | Aareon_ | Araq: some Pascalisms such as? |
19:20:16 | FromGitter | <kaushalmodi> ok, here's a formal description of the branch model used by Emacs: https://git.savannah.gnu.org/cgit/emacs.git/tree/CONTRIBUTE#n278 |
19:22:24 | * | zachk joined #nim |
19:22:31 | * | jxy_ quit (Quit: leaving) |
19:24:36 | * | Aareon_ quit (Ping timeout: 260 seconds) |
19:25:29 | Araq | ok ty |
19:25:35 | * | Araq is reading |
19:30:40 | FromGitter | <mratsim> Wait what? https://github.com/Aareon/py-nim "A Python implementation of the Nim programming language" |
19:31:37 | Araq | mratsim: it's for learning purposes afaik |
19:32:18 | FromGitter | <mratsim> I like how crazy it osunds :P |
19:35:01 | FromDiscord_ | <Shield> we need to go deeper |
19:37:25 | Araq | a Nim implementation in Nim would be cool |
19:37:45 | Araq | maybe Nim programmers can read Nim code and help out then |
19:37:50 | * | Aareon_ joined #nim |
19:38:09 | FromGitter | <rayman22201> lol! Nim is already mostly written in Nim, or so I thought. |
19:38:35 | Araq | yeah, it was a joke |
19:38:55 | FromGitter | <rayman22201> to quote @shield, "We need to go deeper" lol |
19:39:23 | FromDiscord_ | <π Aareon π³> a bash impl of nim |
19:39:47 | FromGitter | <rayman22201> I would rather have a BrainF*ck impl of nim than bash. :-P |
19:40:01 | Araq | don't bash bash |
19:40:03 | FromGitter | <rayman22201> what changes is @alehander42 making to the jsgen? |
19:40:12 | FromGitter | <rayman22201> just out of curiousity |
19:40:36 | Araq | rewriting it as an AST->AST transformation with sourcemaps support |
19:40:57 | FromGitter | <rayman22201> oh nice! That is a much needed improvement. |
19:41:37 | FromGitter | <rayman22201> I wanted to try to do exactly that myself, but never found the time. I'm glad it's getting finished. |
19:42:48 | Araq | kaushalmodi: so effectively we have a bugfixes and features branch and bugfixes are merged into the release branches? |
19:43:30 | FromGitter | <kaushalmodi> yes, to be specific the bugfixes would be fixes of bugs only on the release branch |
19:43:41 | FromGitter | <kaushalmodi> that shouldn't contain fixes for new stuff on devel |
19:44:18 | FromGitter | <kaushalmodi> this will allow people to test out the release branch for a set amount of time until it's considered considerably stable |
19:44:39 | FromGitter | <kaushalmodi> unintended alliteration |
19:45:17 | * | zachk quit (Changing host) |
19:45:17 | * | zachk joined #nim |
19:45:18 | FromGitter | <kaushalmodi> Araq: wait |
19:45:41 | FromGitter | <kaushalmodi> we have a "devel" branch and then when you want to release, say Nim 0.20, you will have a release branch nim-0.20 |
19:46:38 | FromGitter | <kaushalmodi> then nim-0.20 should accept only bug fix and doc fix commits relevant to nim-0.20 |
19:46:41 | FromGitter | <kaushalmodi> *just to be clear* |
19:47:15 | FromGitter | <kaushalmodi> in parallel, devel branch can keep on accepting other commits |
19:47:23 | Araq | alright let's try your way then, the "only" problem is that I don't see we can ever release 0.19 |
19:47:30 | * | gangstacat quit (Quit: Δis!) |
19:47:39 | Araq | 0.19.2, I mean |
19:47:46 | FromGitter | <kaushalmodi> yeah .. |
19:48:08 | FromGitter | <kaushalmodi> may be a quick (in 2 months maybe) 0.20 release? |
19:48:18 | * | theelous3 joined #nim |
19:48:28 | FromGitter | <kaushalmodi> but you and all Nim repo write access folks need to be on the same page |
19:49:17 | Araq | and again, it means we have 2 major branches that are always active |
19:49:22 | FromGitter | <kaushalmodi> yes |
19:49:27 | FromGitter | <kaushalmodi> that's the point |
19:49:41 | FromGitter | <kaushalmodi> the release branch should also be heavily tested |
19:49:47 | Araq | well we already have master vs devel |
19:49:49 | FromGitter | <kaushalmodi> right now, probably no one uses the master branch |
19:50:03 | FromGitter | <kaushalmodi> because no devel happens on master |
19:50:06 | Araq | master would turn into "fixes only", not much to change |
19:50:22 | FromGitter | <kaushalmodi> fixes + docs |
19:50:27 | Araq | sure |
19:50:28 | FromGitter | <kaushalmodi> 1) tests |
19:50:35 | FromGitter | <kaushalmodi> \+ tests |
19:50:57 | FromGitter | <kaushalmodi> I see a heavy activity in tests/docs/fixes area |
19:51:53 | FromGitter | <kaushalmodi> You can say that whatever feature set we have now is the one to be released in 0.20 minus the bugs |
19:52:23 | FromGitter | <kaushalmodi> and then focus on just polishing that release branch |
19:52:33 | Araq | what we have now is 0.20, it is not 0.19.x |
19:52:47 | FromGitter | <kaushalmodi> yes, but unreleased 0.20 |
19:53:03 | Araq | yeah but we promised 0.19.x |
19:53:35 | FromGitter | <kaushalmodi> well then, cherry pick for this one time and then adopt the branch model for next release? |
19:54:25 | FromGitter | <kaushalmodi> and whenever you decide to use that model, rename devel to master? |
19:54:28 | Araq | if we cherry pick once we'll always cherry pick because it worked :P |
19:54:35 | FromGitter | <kaushalmodi> then we will have master, nim-xxx branches |
19:55:16 | FromGitter | <rayman22201> Is it worth breaking the promise of 0.19? |
19:55:44 | FromGitter | <rayman22201> at my company we have had to burn release versions before for various reasons. It sucks but it's not the end of the world. |
19:55:53 | Araq | cherry picking is sweet because it burdens a single person, the cherry-picker with it. 2 branches mean I constantly need to watch out over every PR that it goes to master or devel properly |
19:56:30 | FromGitter | <kaushalmodi> Araq: that part is not that tough, may be it looks tough on surface |
19:56:52 | Araq | in the past we got PRs against master which I merged because I overlooked it |
19:56:58 | FromGitter | <kaushalmodi> it's really easy if Nim repo team get this model |
19:57:16 | Araq | I "get" it but it seems error-prone |
19:57:26 | FromGitter | <kaushalmodi> Araq: you then revert that and rebase to devel |
19:57:28 | * | jxy joined #nim |
19:58:09 | Araq | but that's versus the "I don't have to anything" model |
19:58:20 | Araq | *to do |
19:58:25 | FromGitter | <kaushalmodi> oh boy, it's starting all over again :P |
19:58:47 | FromGitter | <kaushalmodi> "you have to manually cherry pick" |
19:58:51 | kungtotte | While git let's you recover from most errors, why would you want to use a process where "revert and rebase if you (very easily) make a mistake"? |
19:58:57 | FromGitter | <kaushalmodi> if you are happy with that, there's no reason to switch |
19:59:03 | kungtotte | *is an accepted methodology |
20:00:00 | FromGitter | <kaushalmodi> kungtotte: I meant that if commit X went to "master" instead of "devel" by mistake, then revert X on master, rebase X to devel and apply it to devel |
20:03:30 | Araq | well sorry, this is an important decision |
20:04:32 | Araq | and your way still feels worse than mine :-) |
20:05:13 | Araq | I mean ok, cherry-picking loses the history, but 0.19.2 is a stable source/binary release for producing zips that lack the .git subdir |
20:05:38 | Araq | it doesn't matter that 'git bisect' can't be done on it. |
20:05:47 | Araq | it we get it wrong, there will be a 0.19.4 |
20:06:03 | FromGitter | <yyyc514> does nim have an htmlEscape anywhere in the core libs? |
20:07:24 | FromGitter | <kaushalmodi> Araq: making git bisect happen was never the motivation for this |
20:07:46 | FromGitter | <kaushalmodi> it's to cleanly track which commits are relevant to the next minor release vs the next major release |
20:08:28 | FromGitter | <kaushalmodi> if you had this model, you would have had nim-0.19 branch, and the docs/bugfixes improvements made since the release of 0.19 would have gone to that branch and merged to "devel" |
20:08:28 | Araq | yyyc514: yeah escapeXml, iirc |
20:08:48 | FromGitter | <kaushalmodi> so cutting 0.19.2 release wouldn't have needed you to cherrypick stuff out of devel |
20:09:38 | FromGitter | <kaushalmodi> right now, you even run the risk of the cherry pick 0.19.2 version introducing regressions due to cherry picking |
20:10:07 | Araq | yeah but that is a complex question, it's like "add, add, add, sort in O(n log n)" vs "always keep it sorted" |
20:11:52 | Araq | and there is no risk of "introducing regressions due to cherry picking" as the builds are tested |
20:12:10 | Araq | we use tests to ensure quality, not git. |
20:13:01 | FromGitter | <kaushalmodi> we can never have enough tests (I am a verification engineer :P) |
20:13:06 | FromGitter | <kaushalmodi> so I don't trust the test suite 100% |
20:13:31 | FromGitter | <kaushalmodi> your cherry picked snapshot could technically result in a snapshot that makes all the tests pass and yet introduce a bug |
20:14:05 | FromGitter | <kaushalmodi> and the fact that that cherry picked doesn't get that well tested (being built and used by users), there's a chance that a newly introduced bug slips through |
20:17:22 | Araq | "that well tested"? why? nightlies even tests the zips can be unpacked, nim builds and the tests are green |
20:17:42 | Araq | that's what you're fighting with... |
20:27:59 | * | Aareon joined #nim |
20:33:27 | * | gangstacat joined #nim |
20:33:29 | * | Trustable joined #nim |
20:39:47 | FromDiscord_ | <Epictek> So after py2nim is complete can we get a nim2py? So I can convert my python code to nim and then back to python again |
20:40:46 | Araq | https://reallifeprogramming.com/git-process-that-works-say-no-to-gitflow-50bf2038ccf7 descibes my model |
20:40:55 | Araq | so I cannot be completely wrong :P |
20:42:37 | FromGitter | <kaushalmodi> > So far everything was very straightforward, but what to do if you need to fix a bug in release while you already have new features on master? β β > Simple. Just create new branch release-branch-1.0 on commit tagged with v1.0.0. Check it out and do your bugfixes, just like you would do it on master. When everything is ready you create new tag v1.0.1 and release. |
20:42:43 | FromGitter | <kaushalmodi> we are not doing that |
20:43:03 | FromGitter | <kaushalmodi> and that writeup, I think, would apply to a smallish one-person dev project |
20:43:20 | FromGitter | <kaushalmodi> right now, Nim doesn't even have a temp release branch |
20:43:44 | Araq | "Now whatβs really good about this model is that it scales to really big projects. Weβve been using it on projects with 3 simultaneous production releases and some more in pre-prod testing. The project was really large with more than 100 developers working on the codebase." |
20:43:57 | FromGitter | <kaushalmodi> > The project was really large with more than 100 developers working on the codebase. |
20:44:02 | FromGitter | <kaushalmodi> yup, I take that back :) |
20:44:49 | FromGitter | <kaushalmodi> the summary image seems to be doing what I suggested: https://cdn-images-1.medium.com/max/1500/1*wBbq75dh2oqZ8QgDJ445EA.png, but minus the cherry picking |
20:44:52 | Araq | we havea temp release branch, I pushed it today |
20:45:07 | FromGitter | <kaushalmodi> so it's subjective.. you prefer cherry picking, and I don't :D |
20:45:47 | FromGitter | <kaushalmodi> I like clean merges from release branches to devel branch |
20:46:22 | Araq | it's not entirely subjective, with your way we cannot release 0.19.2 and you give me the old "don't make mistakes" programmer'y solution |
20:47:09 | FromGitter | <kaushalmodi> > with your way we cannot release 0.19.2 β β because the devel branch is already a mix of minor/major release commits |
20:47:36 | FromGitter | <kaushalmodi> > you give me the old "don't make mistakes" programmer'y solution β β I suggested reverting mistakenly made commits on release branch, not "don't make mistakes" |
20:47:46 | Araq | combined with the unixy "just make everybody obey and take care" solution |
20:48:56 | FromGitter | <kaushalmodi> the branch model kind of makes the development autonomous (if everyone committing understands what release/master branches are for) |
20:48:58 | Araq | yeah, I know, we can always revert |
20:49:34 | FromGitter | <kaushalmodi> with the current flow, you need to manually administer the cherry picking |
20:50:14 | Araq | that's what I *always* need to do, in one way or the other, but I concentrate on this task before a release, I don't have to do it all the time |
20:50:18 | FromGitter | <kaushalmodi> well, this was a whole day debate :P |
20:50:26 | FromGitter | <kaushalmodi> the objective points are on the table |
20:50:36 | FromGitter | <kaushalmodi> you just proceed with what you feel is right |
20:51:21 | Araq | yes, and thanks for the discussion. (no irony here) |
20:51:35 | FromGitter | <kaushalmodi> you are welcome |
20:51:38 | FromGitter | <rayman22201> lol. Welcome to Nimland @kaushalmodi ! All day debates as far as the eye can see :-P |
20:51:57 | FromGitter | <rayman22201> I actually really appreciate this kind of discussion, even as a bystander btw |
20:52:23 | FromGitter | <rayman22201> hard questions deserve this kind of treatment |
20:53:03 | FromGitter | <kaushalmodi> yeah, switching git commit models where there are multiple committers cannot be taken lightly |
20:53:19 | Aareon | Just finished implementing the largest function in the Nim lexer, `getNumber` https://github.com/Aareon/py-nim/blob/lexer-impl-patch-1/compiler/lexer.py |
20:54:21 | FromGitter | <kaushalmodi> btw where is @timotheecour when I needed him :P (see above debate) |
20:54:39 | FromGitter | <rayman22201> lol |
20:55:52 | FromGitter | <yyyc514> @alehander42 thanks! |
20:55:58 | FromGitter | <yyyc514> araq: thanks |
21:07:42 | * | nsf quit (Quit: WeeChat 2.2) |
21:13:16 | * | Trustable quit (Remote host closed the connection) |
21:20:55 | * | wildlander quit (Quit: Konversation terminated!) |
21:24:07 | * | narimiran joined #nim |
21:24:11 | * | miran joined #nim |
21:24:22 | * | miran quit (Remote host closed the connection) |
21:42:31 | * | narimiran quit (Remote host closed the connection) |
21:50:29 | Aareon | Okay. I'm confused. What is `<=%` doing besides checking if less than or equal to? |
21:51:01 | Aareon | Is it doing `lh % rh <= rh`? |
21:53:03 | * | Aareon__ joined #nim |
21:57:10 | * | Aareon left #nim (#nim) |
21:57:22 | * | Aareon__ is now known as Aareon |
21:58:34 | Aareon | i think i found it |
21:58:49 | Aareon | `## Returns true iff ``unsigned(x) <= unsigned(y)``.` |
21:59:39 | def- | same as every operator ending with % |
21:59:53 | Aareon | gotcha. thank you |
22:00:23 | * | druonysus quit (Quit: http://quassel-irc.org - Chat comfortably. Anywhere.) |
22:00:44 | Aareon | now i have the pleasure of implementing `LeU` and `LeU64` |
22:03:47 | Aareon | ```py |
22:03:49 | Aareon | oops |
22:09:27 | krux02 | don't use <=% is is a relic |
22:09:58 | krux02 | it is just <= but it pretends the arguments are untyped even when they are not |
22:10:04 | Aareon | it's in the nim lexer. im just trying to figure out what it does |
22:10:18 | krux02 | just think of <= |
22:10:26 | Aareon | ok, i was just about to say |
22:10:27 | Aareon | gotcha |
22:10:28 | krux02 | it came from a time when nim did not have unsigned |
22:13:16 | Aareon | I appreciate it |
22:20:06 | Aareon | why is `shr` and `shl` a thing? |
22:23:01 | Araq | because why not |
22:27:55 | * | FromGitter quit (Remote host closed the connection) |
22:27:56 | * | oprypin quit (Quit: Bye) |
22:28:26 | * | oprypin joined #nim |
22:33:03 | * | chemist69 quit (Ping timeout: 264 seconds) |
22:33:29 | * | chemist69 joined #nim |
22:41:38 | Aareon | issa scares me |
22:42:04 | Aareon | also, less copy-paste from nim lexer to py lexer. it's almost close enough to copy-paste 10% of the time lol |
22:44:56 | Aareon_ | Its gotten to the point where VSCode can't handle references and declarations anymore. |
23:02:43 | * | vlad1777d joined #nim |
23:16:01 | * | Aareon quit (Ping timeout: 256 seconds) |
23:20:22 | * | kapil____ quit (Quit: Connection closed for inactivity) |
23:27:04 | * | hyp3rbor3ax joined #nim |
23:48:28 | * | ftsf joined #nim |
23:55:16 | * | theelous3 quit (Ping timeout: 260 seconds) |
23:55:22 | * | theelous3_ joined #nim |
23:57:06 | * | vlad1777d quit (Quit: Leaving) |
23:58:04 | * | vlad1777d joined #nim |