TIGCC Forks: GCC4TI
Posted by Michael on 12 January 2009, 15:42 GMT
A group of programmers has developed a new fork of TIGCC. GCC4TI incorporates the bug fixes from the latest beta version of TIGCC, as well as additional features such as the restoration of VTI as a supported emulator. The GCC4TI webpage contains links to a mailing list, wiki, and forum. Community input is welcomed to assist the project.
|
|
Reply to this article
|
The comments below are written by ticalc.org visitors. Their views are not necessarily those of ticalc.org, and ticalc.org takes no responsibility for their content.
|
|
Re: TIGCC Forks: GCC4TI
|
Kevin Kofler
(Web Page)
|
There will be a new official TIGCC with those same bugfixes and more soon.
What the fork also contains, though, is several low-quality patches which have either been rejected outright from TIGCC because of various inherent technical issues with them or are just not good enough to be merged yet.
So I can only strongly recommend to use only TIGCC releases from the TIGCC project (tigcc.ticalc.org), not GCC4TI or any other fork.
|
Reply to this comment
|
12 January 2009, 16:23 GMT
|
|
|
|
|
|
|
|
|
|
|
Re: Re: Re: Re: TIGCC Forks: GCC4TI
|
Lionel Debroux
(Web Page)
|
This is so ridiculous it isn't even funny...
Comments like the one I'm replying to, make people think that you see yourself very highly, and despise others.
The fact is that everyone, by looking at the GCC4TI changesets, can see that:
r1261 and r1307 fix up CVS damage (no line ending handling => checkouted files take EOL convention of the platform... but TIGCC's proprietary documentation system barfs if the documentation files don't have CRLF).
r1263 suppresses formatting quirks from several documentation files.
r1264 works around a limitation of TIGCC's proprietary documentation system that has been present from the beginning. It eases moving files around without having to rewrite thousands lines of code (no convincing use case has been shown so far for a complete rewrite).
r1265 adds the FlashOS library (limited to the header at the beginning of the FlashOS) to the repository, instead of leaving it out-of-tree on Kevin's website (hard to find).
r1267 adds an implementation of stdint.h.
r1268 updates the C headers.
r1272 is a trivial patch to add a new linker built-in, that we proposed for inclusion in TIGCC months ago, but still isn't there.
r1277 adds an implementation of inttypes.h.
r1292 fixes the documentation files of inttypes.h so that they work on case-insensitive filesystems.
r1293 regenerates the Delphi IDE completion information.
r1296 merges the VTI restoring patch (that is, mostly, undeleting code that worked before TIGCC 0.96 Beta 8) to the trunk.
r1299-1306 are things for making the first release of GCC4TI. Notable among those revisions are the introduction of a makefile for ttpack (r1301), a *fix* for compiling ld-tigcc on Windows (r1302). r1303 is one of the ways to reach the goal of building a pstarter.o, there's another one, as we discussed together.
|
Reply to this comment
|
14 January 2009, 07:31 GMT
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Re: Re: Re: Re: Re: TIGCC Forks: GCC4TI
|
Kevin Kofler
(Web Page)
|
* I know about the line endings, I just run unix2dos on all the documentation files after copying them to my tigccdoc folder I generate the docs in, then dos2unix on the headers to get them back into the canonical LF-only format. There's no need to have CR LF endings in the repository.
* OK for the formatting quirks, but why haven't you sent this patch to me? Not that it is absolutely essential...
* The case for a complete rewrite or port is that the current tools are unmaintainable because they're written in a proprietary language. Heck, they won't even run on my GNU/Linux without using WINE. And your solution is bad, the explicit header specifications for the functions should be removed, not added. But that requires actually changing the documentation tools. Another major issue is the "everything is a fatal error" policy (which also implies that only the first error is ever reported and the whole lengthy process has to be restarted from scratch each time a mistake gets fixed).
* Flash OS support is intentionally not included by default in TIGCC, it's incomplete and experimental (and I already explained that to you at least twice).
* stdint.h is already in TIGCC CVS. :-p And the implementation in TIGCC CVS (by Conrad Meyer) is better than the one you originally committed. (Even you noticed it because you replaced yours with ours.)
* Updating the C headers is not a real change, and I also regenerated the ones in TIGCC (and I didn't change them to CR LF line endings, CR LF has no business to be in the repo).
* Your patches for the linker builtins are not fully reviewed. They will be added to TIGCC when I complete the review.
* Your inttypes.h is definitely not good enough for TIGCC, your documentation is incomplete and repetitive.
* Updating the completion information is not a real change, and I also regenerated the one in TIGCC.
|
Reply to this comment
|
14 January 2009, 16:52 GMT
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Re: Re: Re: Re: Re: Re: TIGCC Forks: GCC4TI
|
Lionel Debroux
(Web Page)
|
About the line endings: in our *opinion*, having to run unix2dos & dos2unix back and forth just in order to accomodate the limitations of a well-known-as-crappy SCM sucks.
*We* have multiple copies of Delphi, so *we* can modify the documentation tools. But what we lack, for undertaking this task, is a use case...
We're not dependent on Wine because we have native Windows hosts. The process is not really lengthy (about 30 seconds on my 2-year-old computer when running under Wine - much less than most builds in my daily job).
And the "everything is a fatal error" behaviour could probably be fixed easily, if it were actually a real problem. In my experience (dozens of integrated documentation files for TIGCC, years ago), changes that triggered more than one error were infrequent, so in my *opinion*, it's not a real problem.
Years ago, I started fixing what is by far the main cause of them (references wreckage when moving files around) for TIGCC, but I never finished the work... until GCC4TI (in-between, having gained experience and learnt Perl, which makes the task a piece of cake).
Again, as you can see, we have diverging *opinions*.
|
Reply to this comment
|
14 January 2009, 18:14 GMT
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Re: Re: Re: Re: Re: Re: TIGCC Forks: GCC4TI
|
Lionel Debroux
(Web Page)
|
> * Flash OS support is intentionally not included by default in TIGCC, it's incomplete and experimental (and I already explained that to you at least twice).
You could have repeated your explanation even more times, it still wouldn't have convinced us...
* we see no excuse for maintaining out of tree the header for Flash OS.
* the Flash OS support has been successfully used for years by two different Flash OS. We don't think it can be qualified "experimental". Not to mention it is less experimental in GCC4TI than it is in TIGCC, since no TIGCC release provides the fixes to users...
* as can be seen on the GCC4TI ML, we disagree about the FlashOS support being "incomplete". The chunks of code that are common to *all* Flash OS, without hampering flexibility, are so few and so small (we're talking about several dozens of lines !) that maybe it's just not worth the trouble putting them in a standard library. Especially since it's unlikely that anyone would try making a new Flash OS without having a look at the existing ones...
> [multiple things are] not a real change
I know, but it it weren't obvious, I was explaining every single revision...
> Your patches for the linker builtins are not fully reviewed. They will be added to TIGCC when I complete the review.
Yeah, reviewing two patches that are several dozens of lines each is so damn hard that you haven't done it in months time. Despite spending hours and hours trolling on yAronet and the TIGCC/TICT message board during that period.
But take your time for the review :)
|
Reply to this comment
|
14 January 2009, 18:15 GMT
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Re: Re: Re: Re: Re: TIGCC Forks: GCC4TI
|
Kevin Kofler
(Web Page)
|
* Restoring VTI support is definitely NOT good enough for TIGCC and will never be, VTI support was removed for a reason. The code was an abominable hack, it should never come back. In addition, your patch pollutes the preferences with an unnecessary option (the one to use VTI), increasing UI clutter.
* The makefile for ttpack is not needed.
* As for the fix for ld-tigcc, you dare advertising that as a feature of your fork? Not only did YOU submit a broken, untested patch in the first place, but you also didn't bother telling me about the fix. (This thread doesn't count, it's too late, I already noticed it before, I just didn't get around to verifying that fix and committing it into TIGCC's CVS yet.) So that's a bug YOU introduced into TIGCC and intentionally withheld the fix for.
* Your change for the pstarter.o is incorrect and unneeded.
|
Reply to this comment
|
14 January 2009, 16:53 GMT
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Re: Re: Re: Re: Re: Re: TIGCC Forks: GCC4TI
|
Lionel Debroux
(Web Page)
|
> * The makefile for ttpack is not needed.
It's not strictly needed, yes.
But when you're thinking of automating the building process (something which you should have done a long time ago, it's a well-known good software engineering practice...), it's more convenient to have a consistent building system. Other parts have makefiles, so I added one here as well.
> * As for the fix for ld-tigcc, you dare advertising that as a feature of your fork? Not only did YOU submit a broken,
As noted in the commit message, yes, I'm the one who submitted the patch. But the commit message also mentions that you didn't notice the problem either.
(Which makes you an incompetent reviewer.)
> untested patch
Wrong, and you know it very well: my tests uncovered a bug in ld-tigcc (a *crash* that can result from a mistake in the typing of linker builtins). I told you about it, and you wrote in return that this was an error on invalid, so for you, fixing this had very low priority...
|
Reply to this comment
|
14 January 2009, 18:34 GMT
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Re: Re: Re: Re: Re: Re: Re: Re: TIGCC Forks: GCC4TI
|
Lionel Debroux
(Web Page)
|
> I only rebuild the Window$ binaries every so often
Which makes you an incompetent maintainer: you don't care, except once in a long while, how things would work for the majority of the users of the program you're supposed to maintain...
You didn't even need Windows to catch the problem: I caught it using a cross-compiler (which I hadn't installed at the time I sent you the patch).
You definitely aren't qualified to complain about others being incompetent reviewers, maintainers, or not having the same quality standards as yours...
Automating the build process is one of the items on the GCC4TI todo/wish list, with good reason. It makes maintainers' life easier, improves portability testing, and reduces the timespan between releases, which benefits users. In a nutshell, it's a win-win situation. That's why it was taught to me, at school, as a well-known good software engineering practice.
What a shame you aren't using this good practice...
I see you wrote in your commit message mirroring my fix, that I did not provide it in a timely manner...
Well, if less than 24 hours for providing a fix is not timely, then waiting for more than 10 days before backporting the fix to the program you're supposed to maintain isn't either...
|
Reply to this comment
|
15 January 2009, 08:52 GMT
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Re: Re: Re: Re: Re: Re: TIGCC Forks: GCC4TI
|
Lionel Debroux
(Web Page)
|
> but you also didn't bother telling me about the fix.
> So that's a bug YOU introduced into TIGCC and intentionally withheld the fix for.
I noticed the bug only in the process of building the GCC4TI release, on January 2nd. The release (and the end of the initial phase of the GCC4TI project, building up) was done on January 3rd.
I could indeed have told you of the fix right away on January 2nd, instead of waiting for you to find it in the GCC4TI repository. But your lack of respect towards our work and our persons didn't make me too eager doing so, sorry ;)
(well, maybe you didn't find out about the fix before January 5th or so, after Godzil unbanned you from the server, of which you had triggered the anti-abuse protections. But that's not my fault, that's yours.
You're claiming it was a false positive, but sorry, I'm fairly reluctant to buy your claim, since I already opened more than 20 tickets in a few seconds with my mouse's middle click, without getting banned.)
Oh, BTW: I've just done a `cvs up` of the TIGCC repository, only to notice that you still haven't committed this particular fix. You're therefore woefully unqualified to complain that I didn't tell you of the fix right away...
> * Your change for the pstarter.o is incorrect and unneeded.
Wrong for both "incorrect" and "unneeded": it achieves the purpose of getting a pstarter.o.
Now, as I mentioned in a post above, we discussed another solution, which happens to be better. Next time I want to recompile pstarter.o, I'll scrap the TPR and use that solution.
|
Reply to this comment
|
14 January 2009, 18:40 GMT
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Re: Free Licenses
|
Kevin Kofler
(Web Page)
|
There's a difference between what's legal / allowed by the license and what's moral / tactful. Forking a project which was not abandoned or taken proprietary is a statement of distrust to the maintainer(s), of course it will create bad blood. (And I only mean real forks there, not development branches approved by the original maintainer(s).) It's sorta like stating that the original maintainers are incompetent (and to make things worse, the GCC4TI developers have made explicit claims/insults of that kind in several places). There are plenty of things which are legal, but morally reprehensible, for example betraying one's spouse. If you marry a woman and then cheat on her, you did nothing illegal (at least in most countries), but you can't expect her to still like you after that. It's the same when you fork a project.
None of the people involved in GCC4TI ever tried to work *with* TIGCC. They could have started contributing to TIGCC, integrating the team and then trying to influence its future. But they didn't want that, they wanted decision power without having contributed anything of value (if at all - I don't remember any contribution to TIGCC from Godzil, for example, not even a trivial patch). That's not how meritocracy works.
I'm also really angered by their statements that they represent the wishes of the community, when really they're merging low-quality patches requested by a vocal minority (such as support for VTI) which hurt the user experience (imagine a new user trying to use VTI: first they'll notice their calculator (Titanium/V200) isn't supported; if they work around that by using a TI-89/92+ update, they'll have trouble with the lack of a C debugger and with all the bugs and limitations of VTI; in short, the user experience will suck).
|
Reply to this comment
|
18 January 2009, 07:24 GMT
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Re: Re: Free Licenses
|
Lionel Debroux
(Web Page)
|
> None of the people involved in GCC4TI ever tried to work *with* TIGCC.
That is just plain SLANDER !
Seriously, how DARE you write about moral and tact ??
Both PpHd and I tried to contribute. I'm listed in the TIGCC credits ( http://tigcc.ticalc.org/doc/ info.html#credits ) for having contributed documentation files (dozens of them) back in *2002-2003* (!)...
I know, there are several dozen other files. You discovered a mistake in one of them, and some others break the callgraph, because it's hard to move a file around, due to the stupid way the callgraph was done. The latter problem was fixed in GCC4TI, without using the overkill solution of rewriting everything (as I mentioned above, you don't have a good use case for the rewrite...).
> They could have started contributing to TIGCC
We did (and partially succeeded), *YEARS* ago !
> That's not how meritocracy works.
I know how meritocracy works, I've already explained to you that I became one of the maintainers of the open-source toolchain (the Cecilia implementation of the Fractal component model) I'm using (and contributing to when it doesn't so something that it would be neat for it to have) in my work...
As it's open-source, my claim is partially, if not totally, verifiable ;)
|
Reply to this comment
|
18 January 2009, 10:01 GMT
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Re: Re: Re: Free Licenses
|
Kevin Kofler
(Web Page)
|
You have not contributed anything since 2004, that's over 4 years, what you contributed back then was mainly documentation, not code, and it was "contributed" in a form which is a PITA to merge (huge patch dumps which don't cleanly separate into small parts because of the references instead of small independent patches, non-proofread text containing several spelling and grammar mistakes, untested code (the one-line definitions which go to the headers) which sometimes doesn't even compile, ...). And I can assure you I found a lot more than one mistake. The one you talk about was the one I didn't find (and thus broke my release, which sure didn't increase my motivation to continue merging your stuff). Oh and there was one other "contribution" from you: an invalid "optimization" (untested of course, you'd have noticed otherwise) which turned a working loop into a buggy one. That plus the uncompilable definition in your documentation patch makes 2 times you broke a TIGCC release. And you didn't learn your lesson, as your broken ld-tigcc timestamp patch shows.
As for PpHd, did he contribute anything other than the recent small ld-tigcc patches (of which the BSS section one needs work which he is unwilling to do)? His contributions don't even come close to the amount of work we TIGCC Team members each did.
|
Reply to this comment
|
18 January 2009, 12:04 GMT
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Re: Re: Re[n]: Free Licenses
|
Lionel Debroux
(Web Page)
|
I know Godzil wrote it's a false positive, he did so 9 posts below the yAronet post I linked to, where he explained the reason for your IP address being banned...
Still, given my own experience with the server (I too browsed multiple changesets quickly, and I even once opened ~20 tickets in several seconds, without ever tripping the protection that you tripped), I'm not *completely* convinced.
It's my right not to be convinced and it's my right to tell about it, isn't it ?
What's not your right, though, is smearing slander filth against other people like you did. Your post about us not having ever tried to contribute was not only baseless, but there's consistent basis of the exact opposite !
|
Reply to this comment
|
19 January 2009, 09:09 GMT
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Re: Re: Re: Re: Re: Re: Free Licenses
|
Lionel Debroux
(Web Page)
|
It's your right to see me complaining about your computer misuse as slander, but at least, *I* have something to back my claim.
On the contrary, there are multiple facts backing the *opposite* of *your* claim about us not having ever tried to cooperate, ranging from the TIGCC credits to the topic http://tichessteamhq.yuku.com/ topic/4650 , in which we posted patches for TIGCC *AFTER* we started working on the fork...
> You were asked with helping out merging it, you said you had no time and we had to work with whatever was there.
At the time, yes, that's what I wrote, because that was true. I sent the state of work near the end of summer (at least, after the work required by 89T hardware/software changes), before restarting a full-time occupation known as "university".
The reason why it was not completely ready for review&merge, was that stupid inconsistent naming of references between documentation files (Sebastian's and your fault), which made it hard to move files from a header to another. I hadn't updated some references to match my changes, so the update tools barfed on it.
At the time, there was a wider gap of programming knowledge and experience between [Sebastian and you] and me, so you could have fixed the problem more easily than I could have...
Nowadays, the problem is fixed in GCC4TI by a <130-line Perl script (I learnt Perl after you asked me to rework my updates), and it didn't even require rewriting all the documentation tools (there's no use case for that).
|
Reply to this comment
|
19 January 2009, 07:51 GMT
|
|
|
|
|
|
|
|
Re: Re: Re: TIGCC Forks: GCC4TI
|
Lionel Debroux
(Web Page)
|
(Multiple-part reply to Nikky Southerland, as the post as a whole is over the size limit...)
The reasons of the fork would be more along the lines of Kevin's general behaviour towards other people's ideas, work and persons, and his closed handling of an open source project.
See a post of mine, down this page: GCC4TI has pieces of infrastructure suited for community-driven development, that TIGCC has lacked for years.
We know that some of our patches are incomplete: this is why they live in development branches, in the GCC4TI repository. At least, we're using SVN, which fixes the most glaring flaws of CVS, the well-known-as-terrible SCM Kevin is sticking to...
One of the best examples of the closed handling of TIGCC, is the unilaterally decided removal of VTI support in the Delphi TIGCC IDE. Despite prior complaints to Kevin from community members, when he wrote about his plan on yAronet.
There's no doubt that TIEmu is a more powerful and less buggy emulator than VTI is. However, most programmers *don't have to* care: VTI's bugs don't affect the vast majority of programs. If you have to care about the Protection emulation deficiencies or the incorrect AUTO_INT_5 rate, then you'd better make some tests on TIEmu (but you can borrow code from other programs which have already solved the problem). Otherwise, you *don't have to* use TIEmu.
Programmers are definitely missing out by not using TIEmu, but let's be realistic: we know that Kevin's removal of VTI support has been unsuccessful in making *all* programmers switch to TIEmu. Instead, some programmers have replaced the TIGCC 0.96 Beta 8 IDE with that of older versions (which are less likely to work well under Vista...), or much worse, some programmers stick to older TIGCC versions (with known bugs !!).
|
Reply to this comment
|
13 January 2009, 08:25 GMT
|
|
|
|
|
|
|
|
|
|
|
Re: Re: Re: Re: TIGCC Forks: GCC4TI
|
Kevin Kofler
(Web Page)
|
VTI is completely useless for almost all new programmers, because they have a TI-89 Titanium or a Voyage 200, neither of which are supported by VTI at all. Lack of support for current calculator hardware and software (where "current" means "anything newer than 2001") is the biggest problem, much more so than emulation bugs. (And by the way, even HW2 isn't supported properly by VTI, it just emulates a HW1 claiming to be a HW2 - for grayscale, which is used a lot, this can make a big difference.)
There are also several other technical reasons not to support VTI.
The way to get people to use a current TIGCC is to refuse to answer their questions if they use an old TIGCC (your answering some of those people's programming questions was outright counterproductive), not to add support for an obsolete emulator. (That's also how I answer when I see a question about an old Fedora on the fedora-list:
"> Hey, I have this problem with FC6...
FC6 is no longer supported, please upgrade to at least Fedora 9."
It's time that people get to understand what "no longer supported" means.)
As for CVS, it does what is needed perfectly, why should I switch?
|
Reply to this comment
|
13 January 2009, 22:33 GMT
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Re: Re: Re: Re: Re: TIGCC Forks: GCC4TI
|
Lionel Debroux
(Web Page)
|
> As for CVS, it does what is needed perfectly, why should I switch?
"perfectly" = wrecks of data integrity on the client side, due to non-atomic commit (which I've already experienced to be a problem even in single-committer mode) ?
Non-atomic commit is a sufficient technical argument for switching to another SCM (thankfully, hardly any other SCM has this broken behaviour). I haven't used CVS in four years - except for checkouting repositories that still use that crap, of course.
And I'm even less eager to use CVS as a developer now that I'm aware, through the use of modern DSCM, that CVS is not done for mirroring (which is great for working without being connected to the server, it happens to me quite often). Due to the design of CVS, cvssuck is very slow and generates server load.
Sticking to CVS because "it works perfectly" (??!) is akin to sticking to an old OS because "it works perfectly". In one case, you're advocating sticking to an old solution when there are technically better ones. In the other case, you're denying others the right to stick to an old solution when there are technically better ones...
|
Reply to this comment
|
14 January 2009, 07:52 GMT
|
|
|
|
|
|
|
|
Re: Re: Re: TIGCC Forks: GCC4TI
|
Lionel Debroux
(Web Page)
|
(second part of the reply)
Often, when discussing something about TIGCC, the discussion came down to Kevin justifying his opinion for doing (actually, "not doing", usually) something, and others justifying their opinion for doing (or not doing, or doing differently) the same thing.
A stalemate resulted, since there was no way Kevin would integrate in TIGCC things he didn't like (even if multiple other persons presented technical arguments for doing that very thing)... so it did not make much sense to spend time implementing the thing.
This, in effect, has significantly slowed the rate of progress: the community has a large todo/wish list (see the GCC4TI tracker, http://trac.godzil.net/gcc4ti/report/1 ), but there has hardly been anything *undisputedly* new in TIGCC for more than two years !
(most of the work on TIGCC since 2006 was writing KTIGCC 1 for Qt/KDE 3.x, and then rewriting it for Qt/KDE 4.x, yielding KTIGCC 2. KTIGCC 2 is unfinished, IIRC, and it still works only under *nix. Therefore, the "KTIGCC is a brand-new feature" assertion is not universally considered to be true.)
|
Reply to this comment
|
13 January 2009, 08:25 GMT
|
|
1 2
You can change the number of comments per page in Account Preferences.
|