2021-03-29 GnuCash IRC logs

00:08:07 *** ArtGravity has quit IRC
00:11:45 *** ErikSchillingAblu[m] has joined #gnucash
00:46:26 *** puck has quit IRC
00:46:33 *** puck has joined #gnucash
00:51:17 *** Mechtilde has joined #gnucash
00:52:51 *** puck has quit IRC
00:54:25 *** puck has joined #gnucash
01:04:21 *** chris has joined #gnucash
01:04:21 *** ChanServ sets mode: +v chris
01:15:30 *** sbluhm has joined #gnucash
01:15:30 *** ChanServ sets mode: +v sbluhm
01:29:10 *** frakturfreak has quit IRC
01:30:14 *** FH_thecat has joined #gnucash
01:33:15 *** storyjesse has joined #gnucash
01:38:37 *** fell has quit IRC
01:39:56 *** fell has joined #gnucash
01:39:56 *** ChanServ sets mode: +o fell
01:43:50 *** frakturfreak has joined #gnucash
01:43:50 *** ChanServ sets mode: +v frakturfreak
02:13:01 *** FH_thecat has quit IRC
03:05:39 *** tomk_dk has joined #gnucash
03:17:25 *** AdrienM has quit IRC
03:18:44 *** AdrienM has joined #gnucash
03:18:44 *** ChanServ sets mode: +v AdrienM
03:21:51 *** bertbob has quit IRC
03:23:13 *** bertbob has joined #gnucash
03:23:13 *** ChanServ sets mode: +v bertbob
03:34:26 *** CDB-Man_ has joined #gnucash
03:34:26 *** ChanServ sets mode: +v CDB-Man_
03:36:53 *** CDB-Man has quit IRC
04:53:00 *** gjanssens has joined #gnucash
04:53:00 *** ChanServ sets mode: +o gjanssens
05:07:27 *** FH_thecat has joined #gnucash
05:44:01 *** Aussie_matt has quit IRC
05:46:31 *** jeblad_ has quit IRC
05:47:32 *** User_ has joined #gnucash
06:03:25 *** field^Mop has joined #gnucash
08:07:06 *** clawson has joined #gnucash
08:22:38 *** halipaul has joined #gnucash
08:47:18 *** halipaul has quit IRC
09:15:09 <clawson> Quick question: What does the "@ dependent @" annotation signify in the engine? I thought it might be a Doxygen thing, but I haven't found anything yet while searching around.
09:26:16 <fell> clawson, where do you see it?
09:36:39 <clawson> Some examples: qofinstance.h, qofquery.h, qofbook.h
09:42:19 *** clawson has quit IRC
09:43:21 *** clawson has joined #gnucash
09:50:11 *** chris has quit IRC
10:14:06 <fell> clawson, I believe it is some doxygen thing, too. Perhaps you can find it out by comparing the source with the api docs https://code.gnucash.org/docs/MAINT/
10:20:24 *** clawson has quit IRC
10:23:13 *** sbluhm has quit IRC
10:27:44 *** clawson has joined #gnucash
10:35:03 <clawson> Thanks fell, I won't worry about it too much for now. As we convert to C++, the documentation will likely get rewritten anyway. I'm planning to give rewriting the engine a go starting after Easter (not much free time till then)
10:36:10 <fell> Good Luck! :-)
10:37:14 <fell> But do it in small chunks, show ideas as Pull request, …
10:49:12 <clawson> Thanks! I'll do my best, probably convert one class at a time. I'm not aiming to change the underlying data strructure too much at this point, just a conversion away from GObject to enable the bigger changes by folks who know more than I do
10:54:10 <clawson> There's a cluster of classes in the center of everything: QofBook, QofCollection, QofInstance, and QofClass, that look like the best targets to get an initial handle on it. Respectively: top-level data aggregation, the schema in hashtables, GUIDs, and query system hooks, if I understand them all correctly. It's a neat system
11:11:39 *** jcarl43 has joined #gnucash
11:11:39 *** ChanServ sets mode: +v jcarl43
11:52:46 *** guak has joined #gnucash
12:04:21 *** angel has joined #gnucash
12:21:08 <fell> janssens, I fixed the layout of assistent-csv-export. But I do not understand "Numbers, Date, Time->Force Prices to display as decimals\n
12:22:13 <fell> gjanssens ^
12:28:52 *** FH_thecat has quit IRC
12:36:17 *** storyjesse has quit IRC
12:37:10 *** jralls_afk has joined #gnucash
12:37:10 *** ChanServ sets mode: +o jralls_afk
12:39:31 *** jralls has quit IRC
12:50:11 *** sbluhm has joined #gnucash
12:52:13 *** jralls_afk is now known as jralls
12:52:14 *** angel has quit IRC
12:55:26 <jralls> clawson @dependent@ and so on are markups for an old static analyzer one of the no-longer-active devs was trying out 12 years ago.
13:01:08 <jralls> clawson, Do not start rewriting engine on your own. Discuss with me and/or gjanssens a plan of attack and do one class first to test out the conceptual approach.
13:02:44 *** Mechtilde has quit IRC
13:03:20 *** Mechtilde has joined #gnucash
13:07:03 *** clawson has quit IRC
13:10:09 *** angel has joined #gnucash
13:12:07 *** sbluhm has quit IRC
13:12:34 *** ArtGravity has joined #gnucash
13:12:34 *** ChanServ sets mode: +v ArtGravity
13:15:36 *** sbluhm has joined #gnucash
13:15:36 *** ChanServ sets mode: +v sbluhm
13:23:52 *** angel has quit IRC
13:25:27 *** Hamaryns has joined #gnucash
13:25:27 *** ChanServ sets mode: +v Hamaryns
13:35:49 *** sbluhm has quit IRC
13:37:14 *** sbluhm has joined #gnucash
13:37:14 *** ChanServ sets mode: +v sbluhm
13:45:49 *** fabior has joined #gnucash
13:50:22 *** Hamaryns has quit IRC
13:50:42 *** Hamaryns has joined #gnucash
13:50:42 *** ChanServ sets mode: +v Hamaryns
13:56:27 *** fabior has quit IRC
14:06:42 <fell> gjanssens: The comma in the line before is misleading. will fix it.
14:16:58 *** sbluhm has quit IRC
14:25:03 *** jervin has joined #gnucash
14:33:38 *** clawson has joined #gnucash
14:36:48 <clawson> jralls, sure thing, I'm glad to chat. So far I've been studying the patterns that exist so I can understand the current behavior. I mentioned above some of the core classes I found on my own, but if you have high-priority candidates or good seams to start from, I'm all ears
14:36:48 <gncbot> clawson: Sent 8 minutes ago: <lmat> Please exercise caution rewriting the engine . It's not a small task because it touches everything. cluster of classes in the center of everything: QofBook, QofCollection, QofInstance... these classes you mentioned are already in C++, though they are accessible from C for the sake of those parts of the application that are only in C.
14:37:30 <jralls> clawson, are you familiar with GObject?
14:39:39 <jralls> clawson, also we don't want to exactly duplicate the current behavior, we want to move to a SQL-based load objects when needed approach to deal with the scaling issues that have arisen from keeping everything in memory and to provide a more flexible query mechanism.
14:39:55 <clawson> I've been studying GObject, but I've not used it before. Looks fairly straightforward. Most of the GObject code I've been studying follows a hierarchy from GObject -> QofInstance -> Other classes, where QofInstance brings in the GUID tools. Most classes have some private data, which is similar to a Pimpl pattern in C++.
14:43:07 <jralls> GObject is mostly straightforward if a bit naive. We're not using it quite right, especially the reference counting. Another big problem is that it relies heavily on casting everything to and from void*, a practice greatly frowned upon in C++
14:44:39 <jralls> And it's object model is very much 1990s ARM style with deep class hierarchies and cpp macros where modern C++ would use generics.
14:51:36 *** ChanServ sets mode: +qo warlord warlord
14:51:38 *** warlord sets mode: +o gncbot
14:51:42 <warlord> .
14:52:35 *** ArtGravity has quit IRC
14:53:18 <clawson> Does GNC uses GObject reference counting at all? I think that would need types to inherit from G_TYPE_BOXED, but that name doesn't show up anywhere in the engine code
14:55:03 *** ArtGravity has joined #gnucash
14:55:03 *** ChanServ sets mode: +v ArtGravity
14:55:04 <jralls> The engine code doesn't use reference counting or much else in the way of memory management. It mostly depends on everything being constructed at the beginning of a session and destroyed at the end.
14:56:38 <jralls> It does however use G_TYPE_BOXED a lot because that's necessary for GValue, a sort of std::any (but 20 years older than std::any).
14:58:50 <jralls> But why do you think that something needs to use G_TYPE_BOXED to get g_object_ref?
15:00:01 <clawson> I was just reading that in a tutorial about GObject. They were saying to inherit from G_TYPE_OBJECT for non-managed, G_TYPE_BOXED for managed types
15:01:35 <clawson> I suppose it makes sense that inheritance wouldn't be the only way that GLib uses dynamic types. I haven't looked too deeply at GValue yet
15:09:12 <jralls> I just looked again. GBoxed is for wrapping random C structs. https://developer.gnome.org/gobject/stable/gobject-Boxed-Types.html. What tutorial said to inherit from them?
15:09:52 *** jervin has quit IRC
15:11:25 *** field^Mop has quit IRC
15:12:05 *** ArtGravity has quit IRC
15:12:08 <warlord> clawson, you can just use g_object_ref() and g_object_unref() -- although I don't know if we do.
15:13:11 <warlord> see https://developer.gnome.org/gobject/stable/gobject-memory.html
15:13:46 <jralls> warlord, that won't work with anything in engine, none of the classes are written correctly.
15:14:59 <jralls> For it to work you have to implement dispose and finalize functions and connect them to the vtable in foo_class_init.
15:15:35 <warlord> jralls, that jives with my "I don't know if we do"...
15:18:28 <clawson> jralls, I'm mistakenly remembering a tutorial. I think I read a description of G_DEFINE_BOXED_TYPE, saw that the engine does not use this, and inferred that engine types are not reference counted: https://developer.gnome.org/gobject/stable/gobject-Type-Information.html
15:18:37 *** ArtGravity has joined #gnucash
15:18:37 *** ChanServ sets mode: +v ArtGravity
15:18:55 <jralls> So you got the right answer for the wrong reason. ;-)
15:19:43 <clawson> Beginner luck, I suppose!
15:22:38 *** Mechtilde has quit IRC
15:23:26 <jralls> Memory management in the engine is a huge mess because naked pointers are held by everything that might need them and if you delete e.g. a split the code has to find all of the pointers to it and remove them.
15:28:48 *** angel has joined #gnucash
15:41:23 *** Hamaryns has quit IRC
15:43:01 *** David has quit IRC
15:43:38 *** David has joined #gnucash
15:46:54 *** angel has quit IRC
16:07:21 <noregret> jralls: thank you very much, I appreciate it
16:08:13 <jralls> noregret, You're welcome.
16:23:58 *** cptr has joined #gnucash
17:00:16 *** jw4 has quit IRC
17:00:55 *** jw4 has joined #gnucash
17:00:55 *** ChanServ sets mode: +v jw4
17:02:09 *** User_ has quit IRC
17:04:39 *** David has quit IRC
17:04:53 *** David has joined #gnucash
17:12:41 *** cptr has quit IRC
17:27:23 *** tomk_dk has quit IRC
17:27:55 *** gjanssens has quit IRC
17:28:35 *** clawson has quit IRC
17:39:25 *** jervin has joined #gnucash
18:11:41 *** Aussie_matt has joined #gnucash
18:36:54 *** chris has joined #gnucash
18:36:54 *** ChanServ sets mode: +v chris
18:36:54 *** gncbot sets mode: +o chris
19:28:35 *** Agfarmer18 has joined #gnucash
19:34:45 *** jcarl43 has quit IRC
19:56:58 <fell> chris, was your intention tto push your maint branch or isit still WiP?
20:07:20 *** ericdm has quit IRC
20:24:45 *** guak has quit IRC
20:27:55 <ArtGravity> I really like that the Update & Reconcile shows the selected match, but I have one that is matching the wrong item when a better match is available. Is there any way to force the correct match?
20:31:04 <ArtGravity> Instead of matching a transaction on the exact date with the exact amount, the import dialog is matching a transaction for a dollar less at a future date.
20:35:01 <ArtGravity> It appears that another transaction for a slightly higher amount claimed the correct match first. I thought I had cleared the match by switching it to an Add, but Gnucash crashed and I missed clearing it on the next import.
20:35:41 <ArtGravity> If it happens again in the future, I'll ask again, but it probably won't reoccur.
20:43:11 *** jervin has quit IRC
20:43:23 *** jervin has joined #gnucash
20:47:44 *** jervin has quit IRC
22:23:38 *** ericdm has joined #gnucash
22:25:06 *** ChanServ sets mode: +v ericdm
22:29:27 *** Agfarmer18 has quit IRC
22:50:48 *** jervin has joined #gnucash
22:58:26 *** jervin has quit IRC
23:03:41 *** chris-phone has joined #gnucash
23:03:41 *** ChanServ sets mode: +v chris-phone
23:03:58 <chris-phone> Fell ???
23:05:20 *** jervin has joined #gnucash
23:08:14 *** jervin has quit IRC
23:16:57 *** mikey has quit IRC
23:17:26 *** ArtGravity has quit IRC
23:21:33 *** mikey has joined #gnucash
23:21:34 *** ChanServ sets mode: +v mikey
23:31:05 <fell> christopherlam/maint is 2 commits ahead and 1 behind GnuCash/maint.
23:37:10 <chris-phone> Fell i do this to check CI and push to code from time to time
23:37:28 <fell> Ah, Ok
23:47:58 <chris-phone> You'll be happy that master will remove 32 date related strings