<< 31-10-2018 >>

00:04:45AraqAST changes, minor ones.
00:05:01Araqcan't think of anything else right now, good night
00:05:15FromDiscord_<Shield> good night
00:05:54*theelous3_ joined #nim
00:07:35*zachk quit (Quit: Leaving)
00:35:49*platoff joined #nim
00:40:07AareonPy-Nim is getting kind of out of hand already.
00:46:37*platoff quit (Quit: My MacBook has gone to sleep. ZZZzzz…)
00:47:10FromDiscord_<Shield> do you have a public repo?
00:49:44*zama quit (Ping timeout: 252 seconds)
00:50:25AareonYea, https://github.com/Aareon/py-nim
00:50:41Aareonworking in the `lexer-impl-patch-1` branch rn
00:55:14AareonGetting 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:37FromGitter<gogolxdong> How to use nimscript as shell?
01:48:43shashlickSomeone had written a shell using Nim
01:50:35shashlickAareon: what's yours goal with this project
01:54:41AareonTo bootstrap Nim using Python. Possibly transpile Python to Nim at some point in the future.
01:55:03Aareonshashlick:
01:57:16*Snircle quit (Quit: Textual IRC Client: www.textualapp.com)
02:00:19shashlickCan you explain how one leads to the other?
02:01:29Aareonshashlick: 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:20shashlickHave 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:37Aareon_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:20shashlickcool
02:14:31*rockcavera joined #nim
02:43:04Aareonoh, 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:41Aareondoing my absolute best to import nothing, so that one could bootstrap with a clean python install
02:46:29shashlickpure python modules should be usable
02:50:39AareonEspecially 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:00Aareon_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:10FromDiscord_<🐍 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:01FromDiscord_<🐍 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:03FromGitter<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:35FromGitter<alehander42> Aaeron, so you're trying to use Nim more like a backend for a subset of Python code?
08:19:35FromGitter<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:50FromGitter<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:26FromGitter<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:17FromGitter<alehander42> Araq, I tried to grep for those, trust me :D
08:24:15Araqnimgrep --recursive --ext:nim genericAssign lib/system
08:24:21*kapil____ quit (Quit: Connection closed for inactivity)
08:27:08*kapil____ joined #nim
08:34:52FromGitter<alehander42> hm
08:42:31FromGitter<gogolxdong> Is ArrayMancer going to use Vulkan as GPU backend?
08:43:35FromGitter<narimiran> @mratsim ^
08:44:57FromGitter<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:08FromGitter<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:43FromGitter<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:53Araqyou need to read the spec about how this is supposed to work
09:08:08Araqwhich is overly terse but it's a starting point
09:08:39Araqthe 'mixin e' tells the compiler to shut up and assume 'e' will exist at instantion time
09:08:47FromGitter<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:17Araqhuh?
09:10:11FromGitter<tim-st> result.add(e.enumToString)
09:11:09FromGitter<tim-st> also should it shut up when it's not sure that `ord` is defined?
09:11:19FromGitter<tim-st> I meant `low`
09:12:50FromGitter<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:37leorizematrix spam
09:14:35FromGitter<tim-st> hm, interesting now it seems to detect, maybe vscode problems
09:16:18FromGitter<tim-st> no, it was a problem I add the code to `when` issues
09:16:50*masterdonx quit (K-Lined)
09:19:49FromGitter<narimiran> aaaaaaand, finally did my hacktoberfest!
09:20:04PMunchNice
09:20:07FromGitter<narimiran> 31 PRs in 31 days! (all nim-related)
09:20:17PMunchWhat :S
09:20:26FromGitter<narimiran> https://hacktoberfest.digitalocean.com/stats/narimiran
09:20:28PMunchThat's just crazy
09:20:36FromGitter<narimiran> where are my 6.2 t-shirts? :D
09:21:10FromGitter<alehander42> Araq, I'll add a `[]`(PNode, PNode) , stuff like `$1[$3]` is literally everywhere
09:22:30FromGitter<alehander42> locally*
09:22:35*dyce[m] joined #nim
09:26:13FromGitter<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:30PMunchYeah, my fifth was by far the hardest
09:33:53PMunchI 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:26FromGitter<alehander42> Araq, does `$#` actually mean anything in fmt
09:44:29FromGitter<alehander42> in addf
09:45:04FromGitter<alehander42> ah it mean the `#` means stuff
09:45:05FromGitter<alehander42> ok
09:45:39FromGitter<alehander42> nvm
09:47:05Araq:-)
09:47:47*dom96_w joined #nim
09:48:54*livcd quit (Ping timeout: 244 seconds)
09:49:55AraqI pushed araq-version-0-19-2
09:50:16Araqbranch, commits that contain [backport] should be cherrypicked on top of this branch to give us 0.19
09:50:21Araq*0.19.2
09:50:57*livcd joined #nim
09:51:00Araqkeep in mind that October is not yet over
09:52:54PMunchNice, 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:57FromGitter<alehander42> this makes my sublime happy :D
10:08:27*mech422__ quit (Ping timeout: 240 seconds)
10:10:22FromGitter<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:00FromGitter<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:08Araqtimeouts
10:32:26*platoff joined #nim
10:33:49FromGitter<narimiran> any remedy for this? or just restart and hope for the best?
10:34:22Araqwell with every shrinking of the testS it should happen less and less often
10:43:08FromGitter<narimiran> ok, but i've been seeing it more and more lately
10:43:39FromGitter<narimiran> re: 0.19.2 branch β€” you're doing cherry-picking yourself? do you need some help from others?
10:44:12AraqI'd like others to take over
10:45:17FromGitter<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:37Araq255 commits? oh my...
10:49:08Araqwell 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:12Araqcommit that contain "fixes" also are candidates but compiler bugfixes are the most frequent cause for regressions
10:50:22Araqstdlib fixes are usually ok
10:50:31Araqexcept the ones that touch system.nim
10:50:55FromGitter<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:26Araqwell you can do some filtering and then do the manual thing
10:51:34Araqand there are more commits with [backport]
10:51:38Araqthan just one.
10:53:46FromGitter<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:05Araqthank you
10:56:28Araqif in doubt, leave it out
10:56:37Araqevery fix can also be another regression :P
11:00:27FromGitter<narimiran> eh, where's your adventurous spirit? just merge everything and worry about it later :P :D
11:01:01Araqoh 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:14FromGitter<narimiran> will do
11:01:17Araqbbl
11:12:47*PMunch quit (Ping timeout: 240 seconds)
11:12:54FromGitter<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:00FromGitter<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:56FromGitter<narimiran> also, how would you later (easily) find which commits were *not* cherry picked?
11:33:46FromGitter<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:44PMunchCan I shadow a variable in a template?
11:57:39PMunchI 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:02PMunchI 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:19PMunchAh never mind
12:02:47PMunchI did name.mytemplate, which means Nim needs to typecheck name
12:15:30FromGitter<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:40FromGitter<kaushalmodi> I'd suggest to just do a quick 0.20 release and adopt a master/devel branch model going forward.
13:06:23Araqthe problem is that devel has a compiler refactoring that is important but produced serious regressions
13:06:23Araqso then for 0.19.2 we would need to address these regressions first
13:06:23Araqand that's what we kept doing before, it meant releases could be done every 6 months or so
13:07:11Araqwe cannot keep doing what we did and expect different outcomes
13:07:48Araqbut we can maybe do something different than cherry-picking, but my git knowledge is insufficient
13:08:07FromGitter<kaushalmodi> Hmm, but may be sticking to a strict master/devel model would help
13:08:20FromGitter<kaushalmodi> So that you don't need to do manual cherry picking
13:08:47FromGitter<kaushalmodi> Commit changes for next minor release to master and quickly merge to devel
13:09:02Araqwell 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:02FromGitter<kaushalmodi> That tag won't be sustainable
13:10:13FromGitter<kaushalmodi> You will need to deal with merge issues
13:11:22FromGitter<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:26Araqdoesn'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:43FromGitter<kaushalmodi> Create an alias :)
13:13:32*nc-x joined #nim
13:13:57FromGitter<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:31Araqit's not clear to me "works great for emacs" is applicable
13:31:10AraqEmacs doesn't switch its Lisp implementation from version to version, for example
13:31:30AraqNim might change its default GC implementation, for example
13:32:09FromGitter<kaushalmodi> Emacs has many new breaking features
13:32:24Araqhttps://devguide.python.org/committing/#backporting-changes-to-an-older-version
13:32:32FromGitter<kaushalmodi> Current master has inbuilt bignum support
13:33:03FromGitter<kaushalmodi> But those commits don't happen to the "stable" branch
13:33:32*vlad1777d joined #nim
13:33:36FromGitter<kaushalmodi> Only bug fixes and doc fixes happen to stable and get merged to master
13:34:18FromGitter<kaushalmodi> The point of this model is to allow breaking changes and fixes happen in parallel branches
13:34:44FromGitter<kaushalmodi> Travis will do the checks in both branches all the time
13:34:46*endragor quit (Ping timeout: 268 seconds)
13:35:08FromGitter<kaushalmodi> So you have better confidence in cutting a release out of the stable branch
13:36:02FromGitter<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:49FromGitter<kaushalmodi> Backporting is different than committing to a stable branch
13:39:00FromGitter<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:00AraqI think I understand but the prospect of having to switch between 2 branches all the time makes me nervous
13:43:34Araqwhen I work with feature branches I always get conflicts...
13:43:53*endragor joined #nim
13:44:25*narimiran joined #nim
13:44:39Araqand 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:54Araqcan 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:01FromGitter<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:51FromGitter<kaushalmodi> With the branch model, you can have master, devel, and even next branches
14:01:20FromGitter<kaushalmodi> Commits to master waterfall to devel, and further to next.
14:01:38FromGitter<kaushalmodi> You don't need to manually track which commits to backport where.
14:01:59FromGitter<kaushalmodi> By "waterfall", I mean merging
14:02:03copygirlNawwh. 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:17nc-xAlso 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:23Araqwe review every PR already
14:04:38Araqwe are editing the commit message already
14:04:40*CcxWrk joined #nim
14:04:47Araqat least I do.
14:04:52narimiranwhat about different commit hashes when cherry picking?
14:05:12*Vladar joined #nim
14:05:25Araqwhat about them? for me a commit hash has no inherent meaning
14:05:41FromGitter<alehander42> woudln't this break git history
14:06:19Araqwhich history? afaict people love to pretend there isn't any and it's all linear
14:06:33narimiranas i said earlier: instead of two branches becoming more similar, they would be more and more different
14:06:59FromGitter<alehander42> well, how are the changes ported, aren't they force-pushed onto the 0.19 branch
14:07:07FromGitter<alehander42> maybe it doesn't matter indeed
14:07:12narimiranyou 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:15FromGitter<alehander42> i am not sure how this works, just asking sorry
14:09:14Araqmaybe we should switch to Darcs or something
14:10:48*Jesin quit (Quit: Leaving)
14:12:29Araqand how exactly does this "this PR should have been against master" vs "this PR should have been against devel" NOT manual?
14:13:44FromGitter<kaushalmodi> This model will of course take a bit of time to propagate.
14:14:11FromGitter<kaushalmodi> PR submitters should well be aware if their commit is a feature vs bug fix/doc
14:14:26FromGitter<kaushalmodi> It's not too difficult the distinguish between the two
14:15:15Araqsure but it's not to difficult to cherry pick commits that contain "fixes #" in them either
14:16:20FromGitter<kaushalmodi> "fixes #" could be a new feature too
14:16:48Araqyou use the github API to lookup the tags attached to #xyz
14:17:36FromGitter<kaushalmodi> well, it just seems this flow is easy to break and it's a lot of work on your part
14:18:05AraqI 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:15FromGitter<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:26FromGitter<kaushalmodi> seasoned committers will "get this" in a week or so
14:18:49Araqas 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:20Araqso every model where ALL bugfixes go to stable is broken.
14:20:09Araqand if we are not after a "stable" branch we can continue to do as we do today, everything ends up in devel
14:20:20shashlickBranching is not zero effort, will require some manual patching
14:20:25shashlickBut it isn't rocket science
14:20:30shashlickPeople do it all the time
14:20:49Araqthe concious breaking changes are NOT our problem wrt Nim's QA
14:21:14Araq*conscious
14:22:18FromGitter<kaushalmodi> > so every model where ALL bugfixes go to stable is broken ⏎ ⏎ I didn't mean "all bugfixes"
14:22:30FromGitter<kaushalmodi> stable branch will only have regression bug fixes
14:22:37FromGitter<kaushalmodi> no software is bug-free
14:23:22Araqwell my point is, no matter what we choose, it's always semi-automated
14:23:51FromGitter<kaushalmodi> yes, but with branch model, most of the responsibility shifts to the committer
14:23:54FromGitter<kaushalmodi> PR submitter
14:24:18*abm joined #nim
14:24:18FromGitter<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:34FromGitter<kaushalmodi> it gets easy once all Nim repo committers are onboard with this model
14:24:48FromGitter<kaushalmodi> then at the time of release, you Just Release
14:25:05Araqwe 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:25FromGitter<kaushalmodi> we get back to the point on amortizing merge conflicts
14:25:34FromGitter<alehander42> hm
14:26:08FromGitter<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:16FromGitter<kaushalmodi> you deal with that only when submitting PR
14:26:26FromGitter<kaushalmodi> ..and.. the PR submitter has to deal with that
14:26:31AraqI can always "just release" when the stable branch wasn't hijacked somehow
14:27:07FromGitter<kaushalmodi> well, I rest my case
14:28:18FromGitter<alehander42> what are the models usually used by other active languages ?
14:29:22FromGitter<kaushalmodi> @krux02 About your Macro tutorial, I have an important suggested fix
14:29:37FromGitter<kaushalmodi> > "With Great Power Comes Great Responsibility." -- Spider Man ⏎ ⏎ "With Great Power Comes Great Responsibility." -- Spider Man's uncle
14:30:07krux02yes
14:30:41FromGitter<kaushalmodi> hehe
14:30:44FromGitter<alehander42> Araq, to add another pass, do I need to to anyting else than main.nim
14:31:16Araq"Homer, here is somebody who can help you" - "Batman?" - "No, he is a scientist" - "Batman IS a scientist." - "It is not Batman."
14:31:36Araqmight 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:44FromGitter<kaushalmodi> Araq: can you please look at this issue? https://github.com/nim-lang/Nim/issues/9450
14:35:57FromGitter<kaushalmodi> it's preventing me from using a global config.nims
14:39:05copygirlhttps://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:08copygirlI suppose I'm using `sameType` wrong here, but I'm not entirely sure how.
14:40:48shashlickI 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:07FromGitter<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:08shashlickPerson responsible for stable will pull it into stable and push
14:41:27shashlickHandle any conflicts
14:42:26FromGitter<kaushalmodi> note that that happens even with an empty config.nims
14:42:46Aareon_@alehander2 responded to your comment on the Py-nim issue
14:43:43Araqalehander42: no.
14:53:44*Aareon_ quit (Ping timeout: 250 seconds)
14:55:25FromGitter<alehander42> yeah, I already have my new pas
14:55:26FromGitter<alehander42> s
14:56:20*Aareon_ joined #nim
15:00:58FromGitter<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:46FromGitter<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:10FromGitter<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:16FromGitter<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:21FromGitter<alehander42> for some reason, myClose in sem comes very soon right after myProcess
15:27:33FromGitter<alehander42> maybe I am returning nil in my pass and this makes it stop
15:28:22FromGitter<alehander42> yes!
15:28:24FromGitter<alehander42> fuck
15:28:31FromGitter<alehander42> this was obvious probably
15:39:09Aareon_@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:53Aareon_Just realized that it was alehander42 lol
15:52:31*nc-x quit (Quit: Page closed)
15:52:52FromGitter<alehander42> haha np
15:53:33FromGitter<alehander42> well, a new impl of the nim compiler is a big, but cool undertaking
15:54:19Aareon_Ofc. And it'll obviously be slow. This undertaking is hugely influenced by my desire to write my own language
15:54:37FromGitter<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:34FromGitter<alehander42> I am sure if Araq could rewrite the compiler, it would look at least a bit differently today
15:56:55FromGitter<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:14FromGitter<zacharycarter> Aareon_: Not sure how much experience you have writing interpreters and compielrs
15:57:17FromGitter<zacharycarter> compilers*
15:57:32FromGitter<zacharycarter> but as @alehander42 pointed out - it's not the least bit trivial
15:57:47FromGitter<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:03FromGitter<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:17FromGitter<zacharycarter> I have no idea what experience you have in this realm
15:59:10*PMunch quit (Quit: Leaving)
16:00:12Aareon_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:29FromGitter<zacharycarter> well - I just mean - it's like jumping off a cliff
16:00:34FromGitter<zacharycarter> instead of climbing up it from the bottom
16:00:39FromGitter<zacharycarter> if you ask me
16:01:01FromGitter<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:06Aareon_I'm all ears if youve got suggestions, ofc
16:01:22FromGitter<zacharycarter> Jones Forth is a great starting point for learning about how to write an interpreter
16:01:41FromGitter<zacharycarter> I have some other resources I've saved on github - one moment please
16:03:11FromGitter<zacharycarter> https://github.com/munificent/craftinginterpreters - is one - this book is WIP but has a lot of good content
16:03:14Aareon_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:32Aareon_I have read a decent portion of that book.
16:03:33Araqnarimiran: 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:36FromGitter<zacharycarter> https://github.com/mcilloni/fork
16:03:44Aareon_As well as ybe dragon book as well
16:03:46FromGitter<zacharycarter> ah okay
16:03:54AraqI might as well just try to fix these regressions
16:04:00FromGitter<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:46Aareon_That's true. I'm sort of learning the dirty lang-metal stuff as I go.
16:05:09FromGitter<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:28Aareon_Ofc. My plan is to do a dirty write up that passes tests, document it, then optimize
16:06:51Araqpick easy tests
16:07:04AraqNim's testsuite is full of brutal tests that make me cry
16:07:49FromGitter<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:26Aareon_Good idea
16:11:50FromGitter<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:01AraqI'm still a believer of https://www.joelonsoftware.com/2000/04/06/things-you-should-never-do-part-i/
16:12:19Araqso everything I want to do differently in the compiler is to be done as a compiler refactoring
16:12:37Aareon_Lots of TODOs in the lexer impl rn. Once the write up is done, ill start pushing into a new branch
16:12:43Araqsome of these refactorings can take months but in the end it's still much faster than starting from scratch
16:13:05Araqplus you always start with a system where the tests are green and can be kept green
16:14:39Aareon_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:14FromGitter<alehander42> yeah, the main nim impl can't be rewritten at this point
16:15:45*wildlander joined #nim
16:16:32Aareon_I guess we'll see how it goes. One step at a time.
16:19:10Aareon_1: impl lexer (and helpers/and procs it requires) that passes tests.
16:19:11Aareon_2: document
16:19:11Aareon_3: clean up/optimize (without failing tests)
16:24:46*seni joined #nim
16:33:42FromGitter<alehander42> sounds good, another + I see is you can reuse this as a python lib for parsing/highlight nim code
16:38:55FromGitter<alehander42> ok I can generate JS files based on the new AST->AST
16:39:09Araqyeah alternative implementations are also awesome for Nim's spec
16:39:26FromGitter<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:50Araqsorry about that, but I think I told you
16:40:05AraqI started doing that with the C codegen and gave up :D
16:40:47FromGitter<alehander42> :D no, the renderer should be easy, renderers are always cute
16:41:25FromGitter<alehander42> it's just a lot of similar work for jsgen, but I think >half of it is done now
16:42:24Araqbtw 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:29Aareon_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:05Araqfwiw Python has this https://github.com/python/core-workflow/tree/master/cherry_picker
18:18:31Aareon_Araq: for what?
18:21:00Araqfor its development process
18:22:28FromGitter<kaushalmodi> Araq: koch testinstall is failing with these errors: https://api.travis-ci.org/v3/job/448979303/log.txt
18:22:43FromGitter<kaushalmodi> ```code paste, see link``` [https://gitter.im/nim-lang/Nim?at=5bd9f2f3b9c91919547e550c]
18:22:44Aareon_Oh, for cherry picking a Python state at a specific commit?
18:22:53FromGitter<kaushalmodi> so nodejs is needed for running that?
18:23:07FromGitter<kaushalmodi> shouldn't that be optional?
18:24:42Araqwell we need to test everything we can for a release build
18:25:15Araqthe travis config should list node.js as a dependency
18:26:03FromGitter<kaushalmodi> I looked into that.. but am surprised
18:26:16FromGitter<kaushalmodi> nim-lang/Nim travis doesn't list nodejs as dep: https://github.com/nim-lang/Nim/blob/devel/.travis.yml
18:27:11FromGitter<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:42AraqI wondered the same and never found out
18:31:58FromGitter<kaushalmodi> Araq: the binary name is actually `node` and not `nodejs` on my system
18:32:07FromGitter<kaushalmodi> (though I have never used it)
18:32:16AraqI know and testament knows too
18:32:39FromGitter<kaushalmodi> the error says it looked for `nodejs`
18:34:13FromGitter<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:21FromGitter<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:10FromGitter<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:33FromGitter<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:53FromGitter<kaushalmodi> tests are running fine, but inbetween it somehow fails to find the node/nodejs/iojs binary
18:47:49FromGitter<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:16FromGitter<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:32FromGitter<kaushalmodi> though, it's not clear why node is not found if trusty comes preinstalled with that
18:50:08Araqstill trying to figure out what to do :P http://www.draconianoverlord.com/2013/09/07/no-cherry-picking.html
18:50:22Araqas usual, nobody agrees on git best practices
18:51:52Araq"git cherry-pick -x" an make the connection to the original commit
18:51:54Araq*can
18:52:21*abm quit (Ping timeout: 252 seconds)
18:52:47FromGitter<kaushalmodi> hmm, I am suggesting the branch model seeing on how smoothly the releases happen when using that
18:55:35Aareon_Is the current Nim compiler a transpiled version of the Pas-Nim compiler
18:57:04Aareon_?
18:57:36Araqyeah and interestingly, it still shows
18:58:10Aareon_Lol
18:58:24Aareon_Well, it works
18:58:43*stefanos82 quit (Quit: Quitting for now...)
18:58:44Araqoccasionally I remove some Pascal'isms
19:01:10Araqkaushalmodi: you model only supports having two different versions at the same time
19:08:10FromGitter<kaushalmodi> no
19:08:43FromGitter<kaushalmodi> see https://git.savannah.gnu.org/cgit/emacs.git/refs/
19:09:07FromGitter<kaushalmodi> emacs-26, emacs-25, .. are cut off from master each time a major release happens
19:09:22FromGitter<kaushalmodi> the "master" on emacs would be the Nim "devel"
19:10:30FromGitter<kaushalmodi> using the branch model used in emacs, how it would work is:
19:12:31FromGitter<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:31FromGitter... [https://gitter.im/nim-lang/Nim?at=5bd9fe9f995818347b815c97]
19:13:17FromGitter<kaushalmodi> 1) then finally do the actual release of Nim 0.20
19:13:56FromGitter<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:14FromGitter<kaushalmodi> that way the big changes happening on devel don't impact the next minor release
19:14:35Araqstep (2) is terrible for the contributor's motivation
19:14:50FromGitter<kaushalmodi> I rephrased (2) in (5_
19:14:52FromGitter<kaushalmodi> (5)
19:15:19FromGitter<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:52FromGitter<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:36FromGitter<kaushalmodi> That "one month" time is just contrived, but you get it
19:16:57FromGitter<kaushalmodi> basically "some testing time" to add finishing touch to the to-be-released Nim version
19:17:11FromGitter<kaushalmodi> right now finishing touches + big changes happen to the same devel branch
19:17:32FromGitter<kaushalmodi> so we lose the distinction on what needs to be finished for release vs what will go into the next version
19:19:57Aareon_Araq: some Pascalisms such as?
19:20:16FromGitter<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:29Araqok ty
19:25:35*Araq is reading
19:30:40FromGitter<mratsim> Wait what? https://github.com/Aareon/py-nim "A Python implementation of the Nim programming language"
19:31:37Araqmratsim: it's for learning purposes afaik
19:32:18FromGitter<mratsim> I like how crazy it osunds :P
19:35:01FromDiscord_<Shield> we need to go deeper
19:37:25Araqa Nim implementation in Nim would be cool
19:37:45Araqmaybe Nim programmers can read Nim code and help out then
19:37:50*Aareon_ joined #nim
19:38:09FromGitter<rayman22201> lol! Nim is already mostly written in Nim, or so I thought.
19:38:35Araqyeah, it was a joke
19:38:55FromGitter<rayman22201> to quote @shield, "We need to go deeper" lol
19:39:23FromDiscord_<🐍 Aareon 🐳> a bash impl of nim
19:39:47FromGitter<rayman22201> I would rather have a BrainF*ck impl of nim than bash. :-P
19:40:01Araqdon't bash bash
19:40:03FromGitter<rayman22201> what changes is @alehander42 making to the jsgen?
19:40:12FromGitter<rayman22201> just out of curiousity
19:40:36Araqrewriting it as an AST->AST transformation with sourcemaps support
19:40:57FromGitter<rayman22201> oh nice! That is a much needed improvement.
19:41:37FromGitter<rayman22201> I wanted to try to do exactly that myself, but never found the time. I'm glad it's getting finished.
19:42:48Araqkaushalmodi: so effectively we have a bugfixes and features branch and bugfixes are merged into the release branches?
19:43:30FromGitter<kaushalmodi> yes, to be specific the bugfixes would be fixes of bugs only on the release branch
19:43:41FromGitter<kaushalmodi> that shouldn't contain fixes for new stuff on devel
19:44:18FromGitter<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:39FromGitter<kaushalmodi> unintended alliteration
19:45:17*zachk quit (Changing host)
19:45:17*zachk joined #nim
19:45:18FromGitter<kaushalmodi> Araq: wait
19:45:41FromGitter<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:38FromGitter<kaushalmodi> then nim-0.20 should accept only bug fix and doc fix commits relevant to nim-0.20
19:46:41FromGitter<kaushalmodi> *just to be clear*
19:47:15FromGitter<kaushalmodi> in parallel, devel branch can keep on accepting other commits
19:47:23Araqalright 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:39Araq0.19.2, I mean
19:47:46FromGitter<kaushalmodi> yeah ..
19:48:08FromGitter<kaushalmodi> may be a quick (in 2 months maybe) 0.20 release?
19:48:18*theelous3 joined #nim
19:48:28FromGitter<kaushalmodi> but you and all Nim repo write access folks need to be on the same page
19:49:17Araqand again, it means we have 2 major branches that are always active
19:49:22FromGitter<kaushalmodi> yes
19:49:27FromGitter<kaushalmodi> that's the point
19:49:41FromGitter<kaushalmodi> the release branch should also be heavily tested
19:49:47Araqwell we already have master vs devel
19:49:49FromGitter<kaushalmodi> right now, probably no one uses the master branch
19:50:03FromGitter<kaushalmodi> because no devel happens on master
19:50:06Araqmaster would turn into "fixes only", not much to change
19:50:22FromGitter<kaushalmodi> fixes + docs
19:50:27Araqsure
19:50:28FromGitter<kaushalmodi> 1) tests
19:50:35FromGitter<kaushalmodi> \+ tests
19:50:57FromGitter<kaushalmodi> I see a heavy activity in tests/docs/fixes area
19:51:53FromGitter<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:23FromGitter<kaushalmodi> and then focus on just polishing that release branch
19:52:33Araqwhat we have now is 0.20, it is not 0.19.x
19:52:47FromGitter<kaushalmodi> yes, but unreleased 0.20
19:53:03Araqyeah but we promised 0.19.x
19:53:35FromGitter<kaushalmodi> well then, cherry pick for this one time and then adopt the branch model for next release?
19:54:25FromGitter<kaushalmodi> and whenever you decide to use that model, rename devel to master?
19:54:28Araqif we cherry pick once we'll always cherry pick because it worked :P
19:54:35FromGitter<kaushalmodi> then we will have master, nim-xxx branches
19:55:16FromGitter<rayman22201> Is it worth breaking the promise of 0.19?
19:55:44FromGitter<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:53Araqcherry 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:30FromGitter<kaushalmodi> Araq: that part is not that tough, may be it looks tough on surface
19:56:52Araqin the past we got PRs against master which I merged because I overlooked it
19:56:58FromGitter<kaushalmodi> it's really easy if Nim repo team get this model
19:57:16AraqI "get" it but it seems error-prone
19:57:26FromGitter<kaushalmodi> Araq: you then revert that and rebase to devel
19:57:28*jxy joined #nim
19:58:09Araqbut that's versus the "I don't have to anything" model
19:58:20Araq*to do
19:58:25FromGitter<kaushalmodi> oh boy, it's starting all over again :P
19:58:47FromGitter<kaushalmodi> "you have to manually cherry pick"
19:58:51kungtotteWhile 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:57FromGitter<kaushalmodi> if you are happy with that, there's no reason to switch
19:59:03kungtotte*is an accepted methodology
20:00:00FromGitter<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:30Araqwell sorry, this is an important decision
20:04:32Araqand your way still feels worse than mine :-)
20:05:13AraqI 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:38Araqit doesn't matter that 'git bisect' can't be done on it.
20:05:47Araqit we get it wrong, there will be a 0.19.4
20:06:03FromGitter<yyyc514> does nim have an htmlEscape anywhere in the core libs?
20:07:24FromGitter<kaushalmodi> Araq: making git bisect happen was never the motivation for this
20:07:46FromGitter<kaushalmodi> it's to cleanly track which commits are relevant to the next minor release vs the next major release
20:08:28FromGitter<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:28Araqyyyc514: yeah escapeXml, iirc
20:08:48FromGitter<kaushalmodi> so cutting 0.19.2 release wouldn't have needed you to cherrypick stuff out of devel
20:09:38FromGitter<kaushalmodi> right now, you even run the risk of the cherry pick 0.19.2 version introducing regressions due to cherry picking
20:10:07Araqyeah 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:52Araqand there is no risk of "introducing regressions due to cherry picking" as the builds are tested
20:12:10Araqwe use tests to ensure quality, not git.
20:13:01FromGitter<kaushalmodi> we can never have enough tests (I am a verification engineer :P)
20:13:06FromGitter<kaushalmodi> so I don't trust the test suite 100%
20:13:31FromGitter<kaushalmodi> your cherry picked snapshot could technically result in a snapshot that makes all the tests pass and yet introduce a bug
20:14:05FromGitter<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:22Araq"that well tested"? why? nightlies even tests the zips can be unpacked, nim builds and the tests are green
20:17:42Araqthat'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:47FromDiscord_<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:46Araqhttps://reallifeprogramming.com/git-process-that-works-say-no-to-gitflow-50bf2038ccf7 descibes my model
20:40:55Araqso I cannot be completely wrong :P
20:42:37FromGitter<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:43FromGitter<kaushalmodi> we are not doing that
20:43:03FromGitter<kaushalmodi> and that writeup, I think, would apply to a smallish one-person dev project
20:43:20FromGitter<kaushalmodi> right now, Nim doesn't even have a temp release branch
20:43:44Araq"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:57FromGitter<kaushalmodi> > The project was really large with more than 100 developers working on the codebase.
20:44:02FromGitter<kaushalmodi> yup, I take that back :)
20:44:49FromGitter<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:52Araqwe havea temp release branch, I pushed it today
20:45:07FromGitter<kaushalmodi> so it's subjective.. you prefer cherry picking, and I don't :D
20:45:47FromGitter<kaushalmodi> I like clean merges from release branches to devel branch
20:46:22Araqit'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:09FromGitter<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:36FromGitter<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:46Araqcombined with the unixy "just make everybody obey and take care" solution
20:48:56FromGitter<kaushalmodi> the branch model kind of makes the development autonomous (if everyone committing understands what release/master branches are for)
20:48:58Araqyeah, I know, we can always revert
20:49:34FromGitter<kaushalmodi> with the current flow, you need to manually administer the cherry picking
20:50:14Araqthat'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:18FromGitter<kaushalmodi> well, this was a whole day debate :P
20:50:26FromGitter<kaushalmodi> the objective points are on the table
20:50:36FromGitter<kaushalmodi> you just proceed with what you feel is right
20:51:21Araqyes, and thanks for the discussion. (no irony here)
20:51:35FromGitter<kaushalmodi> you are welcome
20:51:38FromGitter<rayman22201> lol. Welcome to Nimland @kaushalmodi ! All day debates as far as the eye can see :-P
20:51:57FromGitter<rayman22201> I actually really appreciate this kind of discussion, even as a bystander btw
20:52:23FromGitter<rayman22201> hard questions deserve this kind of treatment
20:53:03FromGitter<kaushalmodi> yeah, switching git commit models where there are multiple committers cannot be taken lightly
20:53:19AareonJust 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:21FromGitter<kaushalmodi> btw where is @timotheecour when I needed him :P (see above debate)
20:54:39FromGitter<rayman22201> lol
20:55:52FromGitter<yyyc514> @alehander42 thanks!
20:55:58FromGitter<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:29AareonOkay. I'm confused. What is `<=%` doing besides checking if less than or equal to?
21:51:01AareonIs 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:34Aareoni think i found it
21:58:49Aareon`## Returns true iff ``unsigned(x) <= unsigned(y)``.`
21:59:39def-same as every operator ending with %
21:59:53Aareongotcha. thank you
22:00:23*druonysus quit (Quit: http://quassel-irc.org - Chat comfortably. Anywhere.)
22:00:44Aareonnow i have the pleasure of implementing `LeU` and `LeU64`
22:03:47Aareon```py
22:03:49Aareonoops
22:09:27krux02don't use <=% is is a relic
22:09:58krux02it is just <= but it pretends the arguments are untyped even when they are not
22:10:04Aareonit's in the nim lexer. im just trying to figure out what it does
22:10:18krux02just think of <=
22:10:26Aareonok, i was just about to say
22:10:27Aareongotcha
22:10:28krux02it came from a time when nim did not have unsigned
22:13:16AareonI appreciate it
22:20:06Aareonwhy is `shr` and `shl` a thing?
22:23:01Araqbecause 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:38Aareonissa scares me
22:42:04Aareonalso, less copy-paste from nim lexer to py lexer. it's almost close enough to copy-paste 10% of the time lol
22:44:56Aareon_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