|
Post by Pjot on Feb 1, 2013 20:32:49 GMT 1
All, The latest BaCon version build 29 can be obtained from the BaCon website. Highlights: - PRAGMA to define compiler options programmatically
- The much requested '&' infix string concatenator
- Overall performance improvements, especially in the associative arrays
- New functionality with SCROLL, TIMER and GETPEER$
- Various bugfixes and code improvements
See the list of changes for more details. BaCon releases are made available after testing on several platforms, including Tru64Unix, Solaris, OpenBSD and Linux. Thanks to Peter Fedorow for noticing the bug in PUTBYTE. Thanks to John Spikowski for testing the '&' string concatenator. Furthermore, thanks to the BaCon community as a whole for using BaCon, notifying issues and suggesting improvements! Regards Peter
|
|
Deleted
Deleted Member
Posts: 0
|
Post by Deleted on Feb 3, 2013 1:43:36 GMT 1
Great job with build 29. A lot of great features I have hoped to see materialized.
|
|
Deleted
Deleted Member
Posts: 0
|
Post by Deleted on Feb 4, 2013 5:42:13 GMT 1
Peter, I updated bacon_nocat.bac to your 1.29 release build and having some strange issues. jrs@laptop:~/BaCon/B29/release$ ./bacon bacon_nocat.bac Converting 'bacon_nocat.bac'... done. Compiling 'bacon_nocat.bac'... done. Program 'bacon_nocat' ready. jrs@laptop:~/BaCon/B29/release$ diff bacon bacon_nocat Binary files bacon and bacon_nocat differ jrs@laptop:~/BaCon/B29/release$ ./bacon_nocat bacon.bac Converting 'bacon.bac'... done. Compiling 'bacon.bac'... Compiler emits messages! Problem: file './bacon.bac.h' line 399: struct timeval __b2c__to; struct hostent *__b2c__he; char *__b2c__host; char *__b2c__port; int __b2c__yes = 1; char __b2c__ttl = 1; struct sockaddr_in *__b2c__addr, *__b2c__from; struct ip_mreq __b2c__imreq; Cause: redefinition of '__b2c__yes' jrs@laptop:~/BaCon/B29/release$ Maybe you can figure out why compiling your bacon_concat.bac (bacon.bac) with my updated _nocat version flushes out this error. Using the previous copy of bacon_concat to compile the current bacon.bac produce no errors. UpdateBased on the can't compile 1.29 thread, I tried the suggestion of using the current bash version to compile both version. No errors but they differ.
|
|
|
Post by Pjot on Feb 4, 2013 9:33:45 GMT 1
|
|
Deleted
Deleted Member
Posts: 0
|
Post by Deleted on Feb 4, 2013 10:06:33 GMT 1
The bacon_nocat.bac has been updated with the current release code. I wanted to wait until the compares ( diff) were the same but then it dawned on me that you may need the code to debug the issue. (getting late and time for bed) If they both compile but different, that means I screwed up or & has taken a new twist.
|
|
|
Post by Pjot on Feb 4, 2013 10:23:19 GMT 1
This latest files.allbasic.info/BaCon/bacon_nocat.bac is broken, it does not contain the GETPEER function for example. Also it has the same line twice (line 5387 and line 5402). I don't know what happened but I guess something went wrong when you downloaded the latest build... BR, Peter
|
|
Deleted
Deleted Member
Posts: 0
|
Post by Deleted on Feb 4, 2013 10:42:44 GMT 1
I found it and updated the link again. Anything abnormal will stick out doing a diff between standard and _nocat. It still doesn't compare.
|
|
|
Post by Pjot on Feb 4, 2013 11:47:52 GMT 1
Thanks, this latest 'bacon_nocat' works fine and can compile BaCon successfully.
BR, Peter
|
|
|
Post by Pjot on Feb 4, 2013 19:54:31 GMT 1
All, I would like to introduce an enhancement to the current release schedule. From now on, any bugfix also will be implemented in the current release under a patch number. Since the last release of build 29 on February 1, three bugs were found, so these have been fixed in build 29 patch 1. This way there is no need to wait for a new release to have a correct working BaCon version. Just get the latest from the BaCon website and you're up to date. Any new features and improvements will be released in a next build, as these need to be tested on other platforms first. The next build also includes the bugfixes found in the current build. I hope everybody can agree with this new mechanism... Best regards Peter
|
|
Deleted
Deleted Member
Posts: 0
|
Post by Deleted on Feb 5, 2013 1:45:50 GMT 1
*** DELETED ***
|
|
|
Post by Pjot on Feb 5, 2013 15:00:07 GMT 1
Well, now it is my time to say NO. The '&' operator is translated as a CONCAT$ behind your back. If there are more '&' on one line then the translation will result into a nested sequence of CONCATS. For example, the following string: "Hello" & "cruel" & "world"
...will result into: CONCAT$(CONCAT$("Hello", "cruel"), "world")
...instead of: CONCAT$("Hello", "cruel", "world")
Therefore, the resulting binaries will be different as the generated sourcecode is different. BR, Peter
|
|
Deleted
Deleted Member
Posts: 0
|
Post by Deleted on Feb 5, 2013 16:36:54 GMT 1
If I would have known that the & was creating multiple concat()'s, I would have never put the effort into _nocat. This is like FreeBASIC's attempt at a C emitter. I will no longer be maintaining a bacon_nocat.bac version and will be removing the code from AllBasic. Sorry Peter, I didn't get it until now.
|
|
|
Post by Pjot on Feb 5, 2013 16:44:49 GMT 1
I have mentioned the technique of substituting '&' for CONCAT$ before. Well, not completely. You have to realize that CONCAT is a wrapper around to 'strcat' in C. The only difference is that CONCAT allows a variable amount of arguments. For the rest it completely relies on C's 'strcat'. This is the function in C to concatenate strings. BR, Peter
|
|
Deleted
Deleted Member
Posts: 0
|
Post by Deleted on Feb 5, 2013 16:52:39 GMT 1
Translators have their own way of creating reality and I got fooled. It's not your fault, I just have a optimistic outlook on most of the things you do. (& wasn't worth the effort IMHO)
|
|
|
Post by Pjot on Feb 5, 2013 23:02:14 GMT 1
Exactly, that's what I have been thinking all the time. It is not for nothing that it took so long... Anyway, it's the code that counts - the '&' does look better. BR, Peter
|
|