New FB release coming up

General discussion for topics related to the FreeBASIC project or its community.
Post Reply
dkl
Site Admin
Posts: 3235
Joined: Jul 28, 2005 14:45
Location: Germany

New FB release coming up

Post by dkl »

2013-06-13: 0.90.0rc2 packages available for testing now:
http://www.freebasic.net/forum/viewtopi ... 83#p188183

---

Hello everyone,

we're now closing in on the new FB release. It's 1 month overdue as far as I'm concerned, but in exchange it will contain lots of prebuilt external libraries. And besides that, it contains new features that caused the version 0.9 to be mentioned -- so now, I have started calling it FB 0.90 instead of FB 0.25. May 1.0 follow eventually.

I have prepared some preview packages for testing, and I'd appreciate if some of you could check them out and see whether they can actually compile stuff:

http://sourceforge.net/projects/fbc/fil ... %20Builds/

The linuxmusl, dos and win32 packages include various precompiled third-party libraries, e.g. libpng, TinyPTC, libzip, libcurl, Lua. Pretty much the ones that I was able to compile fairly easily, we have FB headers for, and are open source and allow doing this in their license. The main packages contain static libraries. DLLs for Win32 are optionally available in a separate package.

Besides that, gcc is included (only gcc.exe and cc1.exe) to allow -gen gcc to be used and tested.

All that makes for some huge downloads, and I wonder what the best way to handle this might be. On one hand, we could make a "base" FB download, with "addon" packages -- on the other hand, nothing is easier than an "all-in-one" download. Perhaps both are needed.

The "linuxmusl" build is quite a new thing here, it's Linux but based around musl libc and static linking, instead of glibc like the common distros. That means the FB-linuxmusl package can be used to create static Linux binaries that will run on pretty much anything that runs Linux, without the usual glibc version conflicts and what-not. Overall, it works, though musl libc isn't as stable as glibc yet. For example, musl libc uses a smaller jmp_buf than glibc, but the current FB CRT headers don't take that into account, so it's not safe to use setjmp()/longjmp() with the linuxmusl build at the moment.

On the brighter side though, the linuxmusl build provides all the libraries that are needed to cross-compile Linux programs from Win32, and I have made several cross-compiling related add-on packages.

Besides these standalone builds, the small FB-linux, fbc-djgpp and fbc-mingw32 packages are available too - for installation into a GNU/Linux system, DJGPP directory, and MinGW directory respectively.
angros47
Posts: 2326
Joined: Jun 21, 2005 19:04

Re: New FB release coming up

Post by angros47 »

I'm happy to hear that.

Does the DOS version include support for dynamic linking?
http://www.freebasic.net/forum/viewtopi ... =4&t=20929
h4tt3n
Posts: 698
Joined: Oct 22, 2005 21:12
Location: Denmark

Re: New FB release coming up

Post by h4tt3n »

Great, looking forward to this!
nobozoz
Posts: 238
Joined: Nov 17, 2005 6:24
Location: Chino Hills, CA, USA

Re: New FB release coming up

Post by nobozoz »

dkl-

".\examples\GUI\win32\fileopen.bas" and ".\examples\GUI\win32\shellfolder.bas" both fail to link:
---------
G:\fb.9rc1\fbc -s console -v -mt -w pedantic -lang fb "shellfolder.bas"
FreeBASIC Compiler - Version 0.90.0 (05-03-2013) for win32
Copyright (C) 2004-2013 The FreeBASIC development team.
standalone
compiling: shellfolder.bas -o shellfolder.asm (main module)
shellfolder.bas(40) warning 34(0): 'BYVAL AS STRING' actually behaves like 'BYREF AS ZSTRING' (this is hoped to change in future releases), at parameter 2 (Prompt) of BrowseForFolder()
shellfolder.bas(42) warning 34(0): 'BYVAL AS STRING' actually behaves like 'BYREF AS ZSTRING' (this is hoped to change in future releases), at parameter 4 (DefaultFolder) of BrowseForFolder()
assembling: G:\fb.9rc1\bin\win32\as.exe --32 --strip-local-absolute "shellfolder.asm" -o "shellfolder.o"
linking: G:\fb.9rc1\bin\win32\ld.exe -o "shellfolder.exe" -subsystem console "G:\fb.9rc1\lib\win32\fbextra.x" --stack 1048576,1048576 -s -L "G:\fb.9rc1\lib\win32" -L "." "G:\fb.9rc1\lib\win32\crt2.o" "G:\fb.9rc1\lib\win32\crtbegin.o" "G:\fb.9rc1\lib\win32\fbrt0.o" "shellfolder.o" "-(" -lkernel32 -lgdi32 -luser32 -lversion -ladvapi32 -lole32 -luuid -loleaut32 -lshell32 -lcomctl32 -lfbmt -lgcc -lmsvcrt -lmingw32 -lmingwex -lmoldname -lsupc++ -lgcc_eh "-)" "G:\fb.9rc1\lib\win32\crtend.o"
G:\fb.9rc1\bin\win32\ld.exe: cannot find -luuid
linking failed: 'G:\fb.9rc1\bin\win32\ld.exe' terminated with exit code 1

Build error(s)
--------
All of the other examples in this path compile and link OK. (FBEDIT 1.0.7.6c). WINXP SP3
-----similar prob with .|GUI\IUP\xxx.bas
G:\fb.9rc1\bin\win32\ld.exe: cannot find -liup
linking failed: 'G:\fb.9rc1\bin\win32\ld.exe' terminated with exit code 1

Build error(s)
----- also with problems finding libraries:
\examples
\CGUI\
\wx-c\
\GTK+\
------
-Jim
VANYA
Posts: 1839
Joined: Oct 24, 2010 15:16
Location: Ярославль
Contact:

Re: New FB release coming up

Post by VANYA »

FreeImage (using DLL):
FbTemp.o:fake:(.text+0x30): undefined reference to `FreeImage_GetFileType@8'
FbTemp.o:fake:(.text+0x43): undefined reference to `FreeImage_GetFIFFromFilename@4'
FbTemp.o:fake:(.text+0x7c): undefined reference to `FreeImage_Load@12'
FbTemp.o:fake:(.text+0x99): undefined reference to `FreeImage_FlipVertical@4'
FbTemp.o:fake:(.text+0xa1): undefined reference to `FreeImage_ConvertTo32Bits@4'
FbTemp.o:fake:(.text+0xac): undefined reference to `FreeImage_GetWidth@4'
FbTemp.o:fake:(.text+0xb7): undefined reference to `FreeImage_GetHeight@4'
FbTemp.o:fake:(.text+0xeb): undefined reference to `FreeImage_GetBits@4'
FbTemp.o:fake:(.text+0xf6): undefined reference to `FreeImage_GetPitch@4'
FbTemp.o:fake:(.text+0x145): undefined reference to `FreeImage_Unload@4'
FbTemp.o:fake:(.text+0x14d): undefined reference to `FreeImage_Unload@4'
FbTemp.o:fake:(.text+0x1ac): undefined reference to `FreeImage_Initialise@4'
FbTemp.o:fake:(.text+0x27f): undefined reference to `FreeImage_DeInitialise@0'
FreeImage (using static):
C:\Users\haav\Desktop\fbedittest\Compilier\fbc -s console "FbTemp.bas"
C:\Users\haav\Desktop\fbedittest\Compilier\lib\win32/libFreeImage.a(Plugin.o):(.text+0x1dc): undefined reference to `std::_Rb_tree_increment(std::_Rb_tree_node_base*)'
C:\Users\haav\Desktop\fbedittest\Compilier\lib\win32/libFreeImage.a(Plugin.o):(.text+0x25b): undefined reference to `std::_Rb_tree_increment(std::_Rb_tree_node_base*)'
C:\Users\haav\Desktop\fbedittest\Compilier\lib\win32/libFreeImage.a(Plugin.o):(.text+0x91f): undefined reference to `std::_Rb_tree_increment(std::_Rb_tree_node_base*)'
C:\Users\haav\Desktop\fbedittest\Compilier\lib\win32/libFreeImage.a(Plugin.o):(.text+0x9b5): undefined reference to `std::_Rb_tree_increment(std::_Rb_tree_node_base*)'
C:\Users\haav\Desktop\fbedittest\Compilier\lib\win32/libFreeImage.a(Plugin.o):(.text+0x151d): undefined reference to `std::_Rb_tree_increment(std::_Rb_tree_node_base*)'
C:\Users\haav\Desktop\fbedittest\Compilier\lib\win32/libFreeImage.a(Plugin.o):(.text+0x1631): more undefined references to `std::_Rb_tree_increment(std::_Rb_tree_node_base*)' follow
C:\Users\haav\Desktop\fbedittest\Compilier\bin\win32\ld.exe: C:\Users\haav\Desktop\fbedittest\Compilier\lib\win32/libFreeImage.a(Plugin.o): bad reloc address 0x0 in section `.data'
C:\Users\haav\Desktop\fbedittest\Compilier\bin\win32\ld.exe: final link failed: Invalid operation

libPdf (using static):
C:\Users\haav\Desktop\fbedittest\Compilier\fbc -s console "FbTemp.bas"
C:\Users\haav\Desktop\fbedittest\Compilier\lib\win32/libpdf.a(p_truetype.lo):(.text+0x3941): undefined reference to `_imp__CreateFontIndirectA@4'
C:\Users\haav\Desktop\fbedittest\Compilier\lib\win32/libpdf.a(p_truetype.lo):(.text+0x3975): undefined reference to `_imp__SelectObject@8'
C:\Users\haav\Desktop\fbedittest\Compilier\lib\win32/libpdf.a(p_truetype.lo):(.text+0x397b): undefined reference to `_imp__GetFontData@20'
C:\Users\haav\Desktop\fbedittest\Compilier\lib\win32/libpdf.a(p_truetype.lo):(.text+0x3a2d): undefined reference to `_imp__DeleteObject@4'
C:\Users\haav\Desktop\fbedittest\Compilier\lib\win32/libpdf.a(p_truetype.lo):(.text+0x3c3a): undefined reference to `_imp__DeleteObject@4'

FreeType(using static):
C:\Users\haav\Desktop\fbedittest\Compilier\fbc -s console "FbTemp.bas"
C:\Users\haav\Desktop\fbedittest\Compilier\lib\win32/libfreetype.a(ftgzip.o):(.text+0x229): undefined reference to `inflate'
C:\Users\haav\Desktop\fbedittest\Compilier\lib\win32/libfreetype.a(ftgzip.o):(.text+0x379): undefined reference to `inflateReset'
C:\Users\haav\Desktop\fbedittest\Compilier\lib\win32/libfreetype.a(ftgzip.o):(.text+0x404): undefined reference to `inflateEnd'
C:\Users\haav\Desktop\fbedittest\Compilier\lib\win32/libfreetype.a(ftgzip.o):(.text+0x6e2): undefined reference to `inflateInit2_'
C:\Users\haav\Desktop\fbedittest\Compilier\lib\win32/libfreetype.a(ftgzip.o):(.text+0x749): undefined reference to `inflateEnd'
SDL\Image_test2.bas:
C:\Users\haav\Desktop\fbedittest\Compilier\lib\win32/libSDL_image.a(IMG_webp.o):(.text+0x12f): undefined reference to `WebPGetFeaturesInternal'
C:\Users\haav\Desktop\fbedittest\Compilier\lib\win32/libSDL_image.a(IMG_webp.o):(.text+0x139): undefined reference to `WebPDecodeRGBInto'
C:\Users\haav\Desktop\fbedittest\Compilier\lib\win32/libSDL_image.a(IMG_webp.o):(.text+0x143): undefined reference to `WebPDecodeRGBAInto'
C:\Users\haav\Desktop\fbedittest\Compilier\lib\win32/libSDL_image.a(IMG_jpg.o):(.text+0xff): undefined reference to `jpeg_calc_output_dimensions'
C:\Users\haav\Desktop\fbedittest\Compilier\lib\win32/libSDL_image.a(IMG_jpg.o):(.text+0x109): undefined reference to `jpeg_CreateDecompress'
C:\Users\haav\Desktop\fbedittest\Compilier\lib\win32/libSDL_image.a(IMG_jpg.o):(.text+0x113): undefined reference to `jpeg_destroy_decompress'
C:\Users\haav\Desktop\fbedittest\Compilier\lib\win32/libSDL_image.a(IMG_jpg.o):(.text+0x11d): undefined reference to `jpeg_finish_decompress'
C:\Users\haav\Desktop\fbedittest\Compilier\lib\win32/libSDL_image.a(IMG_jpg.o):(.text+0x127): undefined reference to `jpeg_read_header'
C:\Users\haav\Desktop\fbedittest\Compilier\lib\win32/libSDL_image.a(IMG_jpg.o):(.text+0x131): undefined reference to `jpeg_read_scanlines'
C:\Users\haav\Desktop\fbedittest\Compilier\lib\win32/libSDL_image.a(IMG_jpg.o):(.text+0x13b): undefined reference to `jpeg_resync_to_restart'
C:\Users\haav\Desktop\fbedittest\Compilier\lib\win32/libSDL_image.a(IMG_jpg.o):(.text+0x145): undefined reference to `jpeg_start_decompress'
C:\Users\haav\Desktop\fbedittest\Compilier\lib\win32/libSDL_image.a(IMG_jpg.o):(.text+0x14f): undefined reference to `jpeg_std_error'
C:\Users\haav\Desktop\fbedittest\Compilier\lib\win32/libSDL_image.a(IMG_png.o):(.text+0x53): undefined reference to `png_create_info_struct'
C:\Users\haav\Desktop\fbedittest\Compilier\lib\win32/libSDL_image.a(IMG_png.o):(.text+0x5d): undefined reference to `png_create_read_struct'
C:\Users\haav\Desktop\fbedittest\Compilier\lib\win32/libSDL_image.a(IMG_png.o):(.text+0x67): undefined reference to `png_destroy_read_struct'
C:\Users\haav\Desktop\fbedittest\Compilier\lib\win32/libSDL_image.a(IMG_png.o):(.text+0x71): undefined reference to `png_get_IHDR'
C:\Users\haav\Desktop\fbedittest\Compilier\lib\win32/libSDL_image.a(IMG_png.o):(.text+0x7b): undefined reference to `png_get_channels'
C:\Users\haav\Desktop\fbedittest\Compilier\lib\win32/libSDL_image.a(IMG_png.o):(.text+0x85): undefined reference to `png_get_io_ptr'
C:\Users\haav\Desktop\fbedittest\Compilier\lib\win32/libSDL_image.a(IMG_png.o):(.text+0x8f): undefined reference to `png_get_PLTE'
C:\Users\haav\Desktop\fbedittest\Compilier\lib\win32/libSDL_image.a(IMG_png.o):(.text+0x99): undefined reference to `png_get_tRNS'
C:\Users\haav\Desktop\fbedittest\Compilier\lib\win32/libSDL_image.a(IMG_png.o):(.text+0xa3): undefined reference to `png_get_valid'
C:\Users\haav\Desktop\fbedittest\Compilier\lib\win32/libSDL_image.a(IMG_png.o):(.text+0xad): undefined reference to `png_read_image'
C:\Users\haav\Desktop\fbedittest\Compilier\lib\win32/libSDL_image.a(IMG_png.o):(.text+0xb7): undefined reference to `png_read_info'
C:\Users\haav\Desktop\fbedittest\Compilier\lib\win32/libSDL_image.a(IMG_png.o):(.text+0xc1): undefined reference to `png_read_update_info'
C:\Users\haav\Desktop\fbedittest\Compilier\lib\win32/libSDL_image.a(IMG_png.o):(.text+0xcb): undefined reference to `png_set_expand'
C:\Users\haav\Desktop\fbedittest\Compilier\lib\win32/libSDL_image.a(IMG_png.o):(.text+0xd5): undefined reference to `png_set_gray_to_rgb'
C:\Users\haav\Desktop\fbedittest\Compilier\lib\win32/libSDL_image.a(IMG_png.o):(.text+0xdf): undefined reference to `png_set_packing'
C:\Users\haav\Desktop\fbedittest\Compilier\lib\win32/libSDL_image.a(IMG_png.o):(.text+0xe9): undefined reference to `png_set_read_fn'
C:\Users\haav\Desktop\fbedittest\Compilier\lib\win32/libSDL_image.a(IMG_png.o):(.text+0xf3): undefined reference to `png_set_strip_16'
C:\Users\haav\Desktop\fbedittest\Compilier\lib\win32/libSDL_image.a(IMG_png.o):(.text+0xfd): undefined reference to `png_sig_cmp'
C:\Users\haav\Desktop\fbedittest\Compilier\lib\win32/libSDL_image.a(IMG_png.o):(.text+0x107): undefined reference to `png_set_longjmp_fn'
C:\Users\haav\Desktop\fbedittest\Compilier\lib\win32/libSDL_image.a(IMG_tif.o):(.text+0x14f): undefined reference to `TIFFClientOpen'
C:\Users\haav\Desktop\fbedittest\Compilier\lib\win32/libSDL_image.a(IMG_tif.o):(.text+0x159): undefined reference to `TIFFClose'
C:\Users\haav\Desktop\fbedittest\Compilier\lib\win32/libSDL_image.a(IMG_tif.o):(.text+0x163): undefined reference to `TIFFGetField'
C:\Users\haav\Desktop\fbedittest\Compilier\lib\win32/libSDL_image.a(IMG_tif.o):(.text+0x16d): undefined reference to `TIFFReadRGBAImage'
C:\Users\haav\Desktop\fbedittest\Compilier\lib\win32/libSDL_image.a(IMG_tif.o):(.text+0x177): undefined reference to `TIFFSetErrorHandler'
GTK+\combo_test.bas:
C:\Users\haav\Desktop\fbedittest\Compilier\inc\glib.bi(3631) error 17: Syntax error, found 's1' in '#s1 " " #cmp " " #s2, s1, #cmp, s2)'
C:\Users\haav\Desktop\fbedittest\Compilier\inc\glib.bi(3631) error 17: Syntax error, found 's1' in '#s1 " " #cmp " " #s2, s1, #cmp, s2)'
C:\Users\haav\Desktop\fbedittest\Compilier\inc\glib.bi(3631) error 17: Syntax error, found 's1' in '#s1 " " #cmp " " #s2, s1, #cmp, s2)'
C:\Users\haav\Desktop\fbedittest\Compilier\inc\glib.bi(3631) error 17: Syntax error, found 's1' in '#s1 " " #cmp " " #s2, s1, #cmp, s2)'
C:\Users\haav\Desktop\fbedittest\Compilier\inc\glib-object.bi(278) error 1: Argument count mismatch, expanding: _G_DEFINE_INTERFACE_EXTENDED_BEGIN in '_G_DEFINE_INTERFACE_EXTENDED_BEGIN(TN, t_n, T_P)'
C:\Users\haav\Desktop\fbedittest\Compilier\inc\glib-object.bi(278) error 1: Argument count mismatch, expanding: _G_DEFINE_INTERFACE_EXTENDED_BEGIN in '_G_DEFINE_INTERFACE_EXTENDED_BEGIN(TN, t_n, T_P)'
C:\Users\haav\Desktop\fbedittest\Compilier\inc\glib.bi(3631) error 17: Syntax error, found 's1' in '#s1 " " #cmp " " #s2, s1, #cmp, s2)'
C:\Users\haav\Desktop\fbedittest\Compilier\inc\glib-object.bi(278) error 1: Argument count mismatch, expanding: _G_DEFINE_INTERFACE_EXTENDED_BEGIN in '_G_DEFINE_INTERFACE_EXTENDED_BEGIN(TN, t_n, T_P)'
C:\Users\haav\Desktop\fbedittest\Compilier\inc\cairo\cairo.bi(173) error 17: Syntax error, found 'major' in '#major@!"."#minor@!"."#micro'
C:\Users\haav\Desktop\fbedittest\Compilier\inc\glib-object.bi(278) error 1: Argument count mismatch, expanding: _G_DEFINE_INTERFACE_EXTENDED_BEGIN in '_G_DEFINE_INTERFACE_EXTENDED_BEGIN(TN, t_n, T_P)'
C:\Users\haav\Desktop\fbedittest\Compilier\inc\glib-object.bi(278) error 125: Too many errors, exiting
fxm
Moderator
Posts: 12131
Joined: Apr 22, 2009 12:46
Location: Paris suburbs, FRANCE

Re: New FB release coming up

Post by fxm »

Without use library calls, the main win32 package seems to well work.
TJF
Posts: 3809
Joined: Dec 06, 2009 22:27
Location: N47°, E15°
Contact:

Re: New FB release coming up

Post by TJF »

dkl wrote:Hello everyone,

...

All that makes for some huge downloads, and I wonder what the best way to handle this might be. On one hand, we could make a "base" FB download, with "addon" packages -- on the other hand, nothing is easier than an "all-in-one" download. Perhaps both are needed.
Hello dkl! Good job, thanks for your effort!

Regarding the all-in-one (AIO) download, we've several issues here:
  • a lot of work for FB developers (dkl)
  • blows up the package size
  • cannot be up-to date (just for a short time)
  • bugs last for a long time (ie GTK+ import libraries in fbc-0.24)
  • can never contain all the libraries all the users may want
I still think that we should spend some work to separate the development of compiler and extensions. We should create a new web page (FB-library platform) where users can fetch one or more library extension for the desired OPs. It may be as easy as AIO installation when we have a good tutorial (or an little installer app for downloading and installing the extension files -- only this installer should be shipped with the FB-package).

This new page should contain
  • a verbal description of the library (ie with further links),
  • header files,
  • binaries (exept for UNIX if there're packages) and
  • examples
for each extension (external library).

I see these advantages:
  • small download size (FB package)
  • extensions can get maintained by forum members (less work for FB developers)
  • easy to keep headers and binaries up-to-date (independend from FB releases)
  • high quality when the maintainer is keen on using the extension
  • we still can bundle some (or all) extensions for convenience at this page
TJF
Posts: 3809
Joined: Dec 06, 2009 22:27
Location: N47°, E15°
Contact:

Re: New FB release coming up

Post by TJF »

VANYA wrote:GTK+\combo_test.bas:
C:\Users\haav\Desktop\fbedittest\Compilier\inc\glib.bi(3631) error 17: Syntax error, found 's1' in '#s1 " " #cmp " " #s2, s1, #cmp, s2)'
C:\Users\haav\Desktop\fbedittest\Compilier\inc\glib.bi(3631) error 17: Syntax error, found 's1' in '#s1 " " #cmp " " #s2, s1, #cmp, s2)'
C:\Users\haav\Desktop\fbedittest\Compilier\inc\glib.bi(3631) error 17: Syntax error, found 's1' in '#s1 " " #cmp " " #s2, s1, #cmp, s2)'
C:\Users\haav\Desktop\fbedittest\Compilier\inc\glib.bi(3631) error 17: Syntax error, found 's1' in '#s1 " " #cmp " " #s2, s1, #cmp, s2)'
C:\Users\haav\Desktop\fbedittest\Compilier\inc\glib-object.bi(278) error 1: Argument count mismatch, expanding: _G_DEFINE_INTERFACE_EXTENDED_BEGIN in '_G_DEFINE_INTERFACE_EXTENDED_BEGIN(TN, t_n, T_P)'
C:\Users\haav\Desktop\fbedittest\Compilier\inc\glib-object.bi(278) error 1: Argument count mismatch, expanding: _G_DEFINE_INTERFACE_EXTENDED_BEGIN in '_G_DEFINE_INTERFACE_EXTENDED_BEGIN(TN, t_n, T_P)'
C:\Users\haav\Desktop\fbedittest\Compilier\inc\glib.bi(3631) error 17: Syntax error, found 's1' in '#s1 " " #cmp " " #s2, s1, #cmp, s2)'
C:\Users\haav\Desktop\fbedittest\Compilier\inc\glib-object.bi(278) error 1: Argument count mismatch, expanding: _G_DEFINE_INTERFACE_EXTENDED_BEGIN in '_G_DEFINE_INTERFACE_EXTENDED_BEGIN(TN, t_n, T_P)'
C:\Users\haav\Desktop\fbedittest\Compilier\inc\cairo\cairo.bi(173) error 17: Syntax error, found 'major' in '#major@!"."#minor@!"."#micro'
C:\Users\haav\Desktop\fbedittest\Compilier\inc\glib-object.bi(278) error 1: Argument count mismatch, expanding: _G_DEFINE_INTERFACE_EXTENDED_BEGIN in '_G_DEFINE_INTERFACE_EXTENDED_BEGIN(TN, t_n, T_P)'
C:\Users\haav\Desktop\fbedittest\Compilier\inc\glib-object.bi(278) error 125: Too many errors, exiting
These errors are regarding a STRING concatenation in a macro (it's without '&' and I omitted the '&' in the header to be close to the C syntax). These errors may occur in each source using #INCLUSE ONCE "glib.bi" (or "gtk/gtk.bi").

This worked in FB version up to 0.24. Shall I fix glib.bi or will it get fixed in the new FB version?
MOD
Posts: 557
Joined: Jun 11, 2009 20:15

Re: New FB release coming up

Post by MOD »

wxFBE compiles fine so far but I found some other issues:

issue1:

Code: Select all

Type Bar
	Public:
	Declare Constructor()
	Declare Constructor(value As ZString Ptr)
	Declare Static Function foo(dummy As ZString Ptr) As Bar
	
	Private:
	dummy As ZString Ptr
End Type

Constructor Bar()
	This.dummy = Callocate(1)
End Constructor

Constructor Bar(value As ZString Ptr)
	If value = 0 Then
		This.Constructor()
		Exit Constructor
	EndIf
	This.dummy = Callocate(Len(*value))
	If This.dummy = 0 Then
		This.Constructor()
		Exit Constructor
	EndIf
	For i As Integer = 0 To Len(*value)
		This.dummy[i][0] = value[i][0]
	Next
End Constructor
Function Bar.foo(dummy As ZString Ptr) As Bar
	If dummy = 0 Then
		Exit Function 'comment out and the error is gone
	EndIf
	Dim As Bar newBar = dummy
	Return newBar 'compiler says the error is here
End Function
This code works fine in 0.24 but gives an error with the new version. Exit a function without result isn't the best way but it works so far. Is this new behavior intended?

issue2:

Code: Select all

Dim As Integer array() 'uninitialized array

Print LBound(array), UBound(array) 'LBound = 1!?
Sleep
Print @array(0) 'this is ok
Sleep
Print @array(LBound(array)) 'this doesn't work anymore (gives 4 instead of 0 in my test)
Sleep
LBound is 1 for an uninitialized array!? This breaks a lot of my code.

Two issues in three tests (actually 3 in 3 as wxFBE also uses issue2 and will fail in runtime) isn't worth a new version. :\

Also, if there are so many new features, call it 0.30 or 1.0, but what does 0.90 mean!?
Jonge
Posts: 130
Joined: Jul 17, 2012 17:51
Location: Norway
Contact:

Re: New FB release coming up

Post by Jonge »

TJF wrote:
dkl wrote:Hello everyone,

...

All that makes for some huge downloads, and I wonder what the best way to handle this might be. On one hand, we could make a "base" FB download, with "addon" packages -- on the other hand, nothing is easier than an "all-in-one" download. Perhaps both are needed.
Hello dkl! Good job, thanks for your effort!

Regarding the all-in-one (AIO) download, we've several issues here:
  • a lot of work for FB developers (dkl)
  • blows up the package size
  • cannot be up-to date (just for a short time)
  • bugs last for a long time (ie GTK+ import libraries in fbc-0.24)
  • can never contain all the libraries all the users may want
I still think that we should spend some work to separate the development of compiler and extensions. We should create a new web page (FB-library platform's) where users can fetch one or more library extension for the desired OPs. It may be as easy as AIO installation when we have a good tutorial (or an little installer app for downloading and installing the extension files -- only this installer should be shipped with the FB-package).

This new page should contain
  • a verbal description of the library (ie with further links),
  • header files,
  • binaries (exept for UNIX if there're packages) and
  • examples
for each extension (external library).
What TJF said :-)
fxm
Moderator
Posts: 12131
Joined: Apr 22, 2009 12:46
Location: Paris suburbs, FRANCE

Re: New FB release coming up

Post by fxm »

MOD wrote:wxFBE compiles fine so far but I found some other issues:

issue1:

Code: Select all

Type Bar
	Public:
	Declare Constructor()
	Declare Constructor(value As ZString Ptr)
	Declare Static Function foo(dummy As ZString Ptr) As Bar
	
	Private:
	dummy As ZString Ptr
End Type

Constructor Bar()
	This.dummy = Callocate(1)
End Constructor

Constructor Bar(value As ZString Ptr)
	If value = 0 Then
		This.Constructor()
		Exit Constructor
	EndIf
	This.dummy = Callocate(Len(*value))
	If This.dummy = 0 Then
		This.Constructor()
		Exit Constructor
	EndIf
	For i As Integer = 0 To Len(*value)
		This.dummy[i][0] = value[i][0]
	Next
End Constructor
Function Bar.foo(dummy As ZString Ptr) As Bar
	If dummy = 0 Then
		Exit Function 'comment out and the error is gone
	EndIf
	Dim As Bar newBar = dummy
	Return newBar 'compiler says the error is here
End Function
This code works fine in 0.24 but gives an error with the new version. Exit a function without result isn't the best way but it works so far. Is this new behavior intended?

issue2:

Code: Select all

Dim As Integer array() 'uninitialized array

Print LBound(array), UBound(array) 'LBound = 1!?
Sleep
Print @array(0) 'this is ok
Sleep
Print @array(LBound(array)) 'this doesn't work anymore (gives 4 instead of 0 in my test)
Sleep
LBound is 1 for an uninitialized array!? This breaks a lot of my code.

Two issues in three tests (actually 3 in 3 as wxFBE also uses issue2 and will fail in runtime) isn't worth a new version. :\

Also, if there are so many new features, call it 0.30 or 1.0, but what does 0.90 mean!?
See changelog.txt (fbc 0.90.0):
- EXIT FUNCTION in combination with RETURN with complex function result UDT was accepted, leaving the result UDT unconstructed
(in that case, we can always replace 'Return expression' with 'Function = expression : Exit Function')

See Community Discussion / Lbound/Ubound's dimension parameter
See also FBWiki about LBound/UBound
If you compile with option '-exx', you get the runtime error:
Aborting due to runtime error 6 (out of bounds array access) at line 7 of ...

dkl, why there is no runtime error on 'Print @array(0)' or 'Print @array(UBound(array))', but only on 'Print @array(LBound(array))' or 'Print @array(1)'?
MOD
Posts: 557
Joined: Jun 11, 2009 20:15

Re: New FB release coming up

Post by MOD »

leaving the result UDT unconstructed
This is exactly what I want in this case and I don't want to have a pointer as result type.

@LBound:
A valid value as an "sign" for an error is a pretty bad idea. I my case I don't know at compile time, if the array is initialized and if it is I don't know the values of lbound and ubound. So I've tested @array(LBound(array)). If the array isn't initialized, LBound(array) was 0 and the address was also 0. Index 0 was never out of bound so this worked pretty well. Now it's 1 and tries to get array(1) which is out of bounds and crashes at runtime.
So whatever dimensions it may have, I have always to check with @array(0) if it's initialized? Bad idea, because on an array with 1 to 10 one can easily call array(0) and get the value of a valid address which is right in front of the array. This may cause problems to beginners (not to mention all existing codes, which have to be changed now - code breaking - always a bad idea!) .
fxm
Moderator
Posts: 12131
Joined: Apr 22, 2009 12:46
Location: Paris suburbs, FRANCE

Re: New FB release coming up

Post by fxm »

MOD wrote:
leaving the result UDT unconstructed
This is exactly what I want in this case and I don't want to have a pointer as result type.
This configuration has been justly banned to avoid returning an unconstructed object in the stack.

Generally, the copy constructor is always called by the compiler when a variable is passed to a procedure by value, or a result is returned from a procedure by value:
- But in the latter case of returning by value, the copy constructor is called only if the 'Return x' statement is used.
- If 'Function = x' (or 'Operator = x' or 'Property = x' or 'procedure-name = x') assignment is used: the default constructor is called once at first (a default object is always created for the result), and then the Let (Assign) operator is called at each assignment.
(remark: 'Return x' and 'Function = x' cannot be mixed)

Using fbc 0.24:

Code: Select all

Type UDT
  Dim As Integer I = 1234
End Type

Function test_function (Byval X As Integer) As UDT
  If X = 0 Then
    Exit Function 'default object is returned
  End If
  Dim As Udt u
  u.I = 5678
  Function = u    'specific object is returned
End Function

Function test_return (Byval X As Integer) As UDT
  If X = 0 Then
    Exit Function 'unconstructed object is returned
  End If
  Dim As Udt u
  u.I = 5678      'specific object is returned
  Return u
End Function

Print test_function(0).I
Print test_function(1).I
Print
Print test_return(0).I
Print test_return(1).I
Sleep

Code: Select all

 1234
 5678

-1176087098
 5678
Last edited by fxm on May 04, 2013 15:55, edited 1 time in total.
frisian
Posts: 249
Joined: Oct 08, 2009 17:25

Re: New FB release coming up

Post by frisian »

When trying to compile Fbmath 0.60 by using compil.bat,
with the new FB 0.90 it gives a error messages generated by ar.exe.

I inserted a “dir complex\*.*” in the batch file to see if fbc.exe did work correctly.

Code: Select all

set Fbas=D:\FreeBASIC-0.90.0rc1-win32
set Mlib=D:\FreeBASIC-0.90.0rc1-win32\bin\win32
set Cmdlin=D:\FreeBASIC-0.90.0rc1-win32\fbc.exe -c -w pedantic %a
echo Compiling all FBMath library modules...
Compiling all FBMath library modules...
for %%a in (complex\*.bas) do %Cmdlin%
dir complex\*.*

 Volume in drive D is DATA           Serial number is 90c0:2131
 Directory of  D:\fbmat060\modules\complex\*.*

 4-05-2013  15:07         <DIR>    .
 4-05-2013  15:07         <DIR>    ..
 4-01-2013  17:25          22.076  complex.bas
 4-05-2013  15:07          20.087  complex.o
            42.163 bytes in 2 files and 2 dirs    45.056 bytes allocated
   154.663.407.616 bytes free
D:\FreeBASIC-0.90.0rc1-win32\bin\win32\ar.exe r libfbmath.a complex\*.o
del complex\*.o > nul
for %%a in (curfit\*.bas) do %Cmdlin%
D:\FreeBASIC-0.90.0rc1-win32\bin\win32\ar.exe r libfbmath.a curfit\*.o
del curfit\*.o > nul
for %%a in (equation\*.bas) do %Cmdlin%
D:\FreeBASIC-0.90.0rc1-win32\bin\win32\ar.exe r libfbmath.a equation\*.o
del equation\*.o > nul
for %%a in (eval\*.bas) do %Cmdlin%
D:\FreeBASIC-0.90.0rc1-win32\bin\win32\ar.exe r libfbmath.a eval\*.o
del eval\*.o > nul
for %%a in (fmath\*.bas) do %Cmdlin%
D:\FreeBASIC-0.90.0rc1-win32\bin\win32\ar.exe r libfbmath.a fmath\*.o
del fmath\*.o > nul
for %%a in (fourier\*.bas) do %Cmdlin%
D:\FreeBASIC-0.90.0rc1-win32\bin\win32\ar.exe r libfbmath.a fourier\*.o
del fourier\*.o > nul
for %%a in (integral\*.bas) do %Cmdlin%
D:\FreeBASIC-0.90.0rc1-win32\bin\win32\ar.exe r libfbmath.a integral\*.o
del integral\*.o > nul
for %%a in (largeint\*.bas) do %Cmdlin%
D:\FreeBASIC-0.90.0rc1-win32\bin\win32\ar.exe r libfbmath.a largeint\*.o
del largeint\*.o > nul
for %%a in (matrices\*.bas) do %Cmdlin%
D:\FreeBASIC-0.90.0rc1-win32\bin\win32\ar.exe r libfbmath.a matrices\*.o
del matrices\*.o > nul
for %%a in (optim\*.bas) do %Cmdlin%
D:\FreeBASIC-0.90.0rc1-win32\bin\win32\ar.exe r libfbmath.a optim\*.o
del optim\*.o > nul
for %%a in (plot\*.bas) do %Cmdlin%
D:\FreeBASIC-0.90.0rc1-win32\bin\win32\ar.exe r libfbmath.a plot\*.o
del plot\*.o > nul
for %%a in (polynom\*.bas) do %Cmdlin%
polynom\polyutil.bas(71) error 41: Variable not declared, R in 'R(J) = Z(I).X'
polynom\polyutil.bas(74) error 41: Variable not declared, C in 'C(K).X = Z(I).X'
polynom\polyutil.bas(74) error 3: Expected End-of-Line, found 'X' in 'C(K).X = Z(I).X'
polynom\polyutil.bas(75) error 70: Array not dimensioned, before '(' in 'C(K).Y = Z(I).Y'
polynom\polyutil.bas(81) error 70: Array not dimensioned, before '(' in 'K = I: A = R(I)'
polynom\polyutil.bas(83) error 70: Array not dimensioned, before '(' in 'IF R(J) < A THEN K = J: A = R(J)'
polynom\polyutil.bas(83) error 70: Array not dimensioned, before '(' in 'IF R(J) < A THEN K = J: A = R(J)'
polynom\polyutil.bas(85) error 70: Array not dimensioned, before '(' in 'SWAP R(I), R(K)'
polynom\polyutil.bas(90) error 70: Array not dimensioned, before '(' in 'Z(I).X = R(I)'
polynom\polyutil.bas(97) error 70: Array not dimensioned, before '(' in 'Z(J).X = C(I).X'
polynom\polyutil.bas(97) error 125: Too many errors, exiting
D:\FreeBASIC-0.90.0rc1-win32\bin\win32\ar.exe r libfbmath.a polynom\*.o
del polynom\*.o > nul
for %%a in (proba\*.bas) do %Cmdlin%
D:\FreeBASIC-0.90.0rc1-win32\bin\win32\ar.exe r libfbmath.a proba\*.o
del proba\*.o > nul
for %%a in (random\*.bas) do %Cmdlin%
D:\FreeBASIC-0.90.0rc1-win32\bin\win32\ar.exe r libfbmath.a random\*.o
del random\*.o > nul
for %%a in (stat\*.bas) do %Cmdlin%
D:\FreeBASIC-0.90.0rc1-win32\bin\win32\ar.exe r libfbmath.a stat\*.o
del stat\*.o > nul
for %%a in (strings\*.bas) do %Cmdlin%
D:\FreeBASIC-0.90.0rc1-win32\bin\win32\ar.exe r libfbmath.a strings\*.o
del strings\*.o > nul
move libfbmath.a ..\
D:\fbmat060\modules\libfbmath.a -> D:\fbmat060\libfbmath.a
     1 file moved
cd ..
dir *.a

 Volume in drive D is DATA           Serial number is 90c0:2131
 Directory of  D:\fbmat060\*.a

 4-05-2013  15:07               8  libfbmath.a
                 8 bytes in 1 file and 0 dirs    4.096 bytes allocated
   154.662.838.272 bytes free
ar.exe error messages are not redirected but here the are.

Code: Select all

D:\FreeBASIC-0.90.0rc1-win32\bin\win32\ar.exe: creating libfbmath.a
D:\FreeBASIC-0.90.0rc1-win32\bin\win32\ar.exe: complex\*.o: Invalid argument
D:\FreeBASIC-0.90.0rc1-win32\bin\win32\ar.exe: curfit\*.o: Invalid argument
D:\FreeBASIC-0.90.0rc1-win32\bin\win32\ar.exe: equation\*.o: Invalid argument
D:\FreeBASIC-0.90.0rc1-win32\bin\win32\ar.exe: eval\*.o: Invalid argument
D:\FreeBASIC-0.90.0rc1-win32\bin\win32\ar.exe: fmath\*.o: Invalid argument
D:\FreeBASIC-0.90.0rc1-win32\bin\win32\ar.exe: fourier\*.o: Invalid argument
D:\FreeBASIC-0.90.0rc1-win32\bin\win32\ar.exe: integral\*.o: Invalid argument
D:\FreeBASIC-0.90.0rc1-win32\bin\win32\ar.exe: largeint\*.o: Invalid argument
D:\FreeBASIC-0.90.0rc1-win32\bin\win32\ar.exe: matrices\*.o: Invalid argument
D:\FreeBASIC-0.90.0rc1-win32\bin\win32\ar.exe: optim\*.o: Invalid argument
D:\FreeBASIC-0.90.0rc1-win32\bin\win32\ar.exe: plot\*.o: Invalid argument
D:\FreeBASIC-0.90.0rc1-win32\bin\win32\ar.exe: polynom\*.o: Invalid argument
D:\FreeBASIC-0.90.0rc1-win32\bin\win32\ar.exe: proba\*.o: Invalid argument
D:\FreeBASIC-0.90.0rc1-win32\bin\win32\ar.exe: random\*.o: Invalid argument
D:\FreeBASIC-0.90.0rc1-win32\bin\win32\ar.exe: stat\*.o: Invalid argument
D:\FreeBASIC-0.90.0rc1-win32\bin\win32\ar.exe: strings\*.o: Invalid argument

With FB 0.24 win32

Code: Select all

set Fbas=D:\FreeBASIC-0.90.0rc1-win32
set Mlib=D:\FreeBASIC-0.90.0rc1-win32\bin\win32
set Cmdlin=D:\FreeBASIC-0.90.0rc1-win32\fbc.exe -c -w pedantic %a
echo Compiling all FBMath library modules...
Compiling all FBMath library modules...
for %%a in (complex\*.bas) do %Cmdlin%
dir complex\*.*

 Volume in drive D is DATA           Serial number is 90c0:2131
 Directory of  D:\fbmat060\modules\complex\*.*

 4-05-2013  15:11         <DIR>    .
 4-05-2013  15:11         <DIR>    ..
 4-01-2013  17:25          22.076  complex.bas
 4-05-2013  15:11          20.087  complex.o
            42.163 bytes in 2 files and 2 dirs    45.056 bytes allocated
   154.662.187.008 bytes free
D:\FreeBASIC-0.90.0rc1-win32\bin\win32\ar.exe r libfbmath.a complex\*.o
del complex\*.o > nul
for %%a in (curfit\*.bas) do %Cmdlin%
D:\FreeBASIC-0.90.0rc1-win32\bin\win32\ar.exe r libfbmath.a curfit\*.o
del curfit\*.o > nul
for %%a in (equation\*.bas) do %Cmdlin%
D:\FreeBASIC-0.90.0rc1-win32\bin\win32\ar.exe r libfbmath.a equation\*.o
del equation\*.o > nul
for %%a in (eval\*.bas) do %Cmdlin%
D:\FreeBASIC-0.90.0rc1-win32\bin\win32\ar.exe r libfbmath.a eval\*.o
del eval\*.o > nul
for %%a in (fmath\*.bas) do %Cmdlin%
D:\FreeBASIC-0.90.0rc1-win32\bin\win32\ar.exe r libfbmath.a fmath\*.o
del fmath\*.o > nul
for %%a in (fourier\*.bas) do %Cmdlin%
D:\FreeBASIC-0.90.0rc1-win32\bin\win32\ar.exe r libfbmath.a fourier\*.o
del fourier\*.o > nul
for %%a in (integral\*.bas) do %Cmdlin%
D:\FreeBASIC-0.90.0rc1-win32\bin\win32\ar.exe r libfbmath.a integral\*.o
del integral\*.o > nul
for %%a in (largeint\*.bas) do %Cmdlin%
D:\FreeBASIC-0.90.0rc1-win32\bin\win32\ar.exe r libfbmath.a largeint\*.o
del largeint\*.o > nul
for %%a in (matrices\*.bas) do %Cmdlin%
D:\FreeBASIC-0.90.0rc1-win32\bin\win32\ar.exe r libfbmath.a matrices\*.o
del matrices\*.o > nul
for %%a in (optim\*.bas) do %Cmdlin%
D:\FreeBASIC-0.90.0rc1-win32\bin\win32\ar.exe r libfbmath.a optim\*.o
del optim\*.o > nul
for %%a in (plot\*.bas) do %Cmdlin%
D:\FreeBASIC-0.90.0rc1-win32\bin\win32\ar.exe r libfbmath.a plot\*.o
del plot\*.o > nul
for %%a in (polynom\*.bas) do %Cmdlin%
polynom\polyutil.bas(71) error 41: Variable not declared, R in 'R(J) = Z(I).X'
polynom\polyutil.bas(74) error 41: Variable not declared, C in 'C(K).X = Z(I).X'
polynom\polyutil.bas(74) error 3: Expected End-of-Line, found 'X' in 'C(K).X = Z(I).X'
polynom\polyutil.bas(75) error 70: Array not dimensioned, before '(' in 'C(K).Y = Z(I).Y'
polynom\polyutil.bas(81) error 70: Array not dimensioned, before '(' in 'K = I: A = R(I)'
polynom\polyutil.bas(83) error 70: Array not dimensioned, before '(' in 'IF R(J) < A THEN K = J: A = R(J)'
polynom\polyutil.bas(83) error 70: Array not dimensioned, before '(' in 'IF R(J) < A THEN K = J: A = R(J)'
polynom\polyutil.bas(85) error 70: Array not dimensioned, before '(' in 'SWAP R(I), R(K)'
polynom\polyutil.bas(90) error 70: Array not dimensioned, before '(' in 'Z(I).X = R(I)'
polynom\polyutil.bas(97) error 70: Array not dimensioned, before '(' in 'Z(J).X = C(I).X'
polynom\polyutil.bas(97) error 125: Too many errors, exiting
D:\FreeBASIC-0.90.0rc1-win32\bin\win32\ar.exe r libfbmath.a polynom\*.o
del polynom\*.o > nul
for %%a in (proba\*.bas) do %Cmdlin%
D:\FreeBASIC-0.90.0rc1-win32\bin\win32\ar.exe r libfbmath.a proba\*.o
del proba\*.o > nul
for %%a in (random\*.bas) do %Cmdlin%
D:\FreeBASIC-0.90.0rc1-win32\bin\win32\ar.exe r libfbmath.a random\*.o
del random\*.o > nul
for %%a in (stat\*.bas) do %Cmdlin%
D:\FreeBASIC-0.90.0rc1-win32\bin\win32\ar.exe r libfbmath.a stat\*.o
del stat\*.o > nul
for %%a in (strings\*.bas) do %Cmdlin%
D:\FreeBASIC-0.90.0rc1-win32\bin\win32\ar.exe r libfbmath.a strings\*.o
del strings\*.o > nul
move libfbmath.a ..\
D:\fbmat060\modules\libfbmath.a -> D:\fbmat060\libfbmath.a
     1 file moved
cd ..
dir *.a

 Volume in drive D is DATA           Serial number is 90c0:2131
 Directory of  D:\fbmat060\*.a

 4-05-2013  15:11         368.820  libfbmath.a
           368.820 bytes in 1 file and 0 dirs    372.736 bytes allocated
   154.661.109.760 bytes free
If you look at the file size of libfbmath.a then you will see that it's 372.736 bytes, for the failed attempt it 8 bytes.

I replaced ar.exe by the version that came with FB 0.24 to solve the problem. Seems to me that the problem is with ar.exe

A problem with the new version (0.90) that more people have is this.
Mandel.bas (Fbmath 0.60).

Code: Select all

D:\FreeBASIC-0.90.0rc1-win32\fbc -s console -R -g "mandel.bas"
mandel.o: In function `MDBCOL':
D:\fbmat060\demo\complex\mandel.bas:85: undefined reference to `HSVTORGB@24'
mandel.o: In function `MANDELBROT':
D:\fbmat060\demo\complex\mandel.bas:97: undefined reference to `CMPLX@16'
D:\fbmat060\demo\complex\mandel.bas:100: undefined reference to `CMPLX@16'
D:\fbmat060\demo\complex\mandel.bas:106: undefined reference to `CABS@4'
D:\fbmat060\demo\complex\mandel.bas:110: undefined reference to `operator pow(COMPLEX&, double)@12'
D:\fbmat060\demo\complex\mandel.bas:111: undefined reference to `operator*(COMPLEX&, COMPLEX&)@8'
D:\fbmat060\demo\complex\mandel.bas:111: undefined reference to `operator+(COMPLEX&, COMPLEX&)@8'
D:\fbmat060\demo\complex\mandel.bas:113: undefined reference to `operator*(double, COMPLEX&)@12'
D:\fbmat060\demo\complex\mandel.bas:113: undefined reference to `operator*(COMPLEX&, COMPLEX&)@8'
D:\fbmat060\demo\complex\mandel.bas:114: undefined reference to `operator+(COMPLEX&, double)@12'
D:\fbmat060\demo\complex\mandel.bas:116: undefined reference to `CABS@4'
D:\fbmat060\demo\complex\mandel.bas:127: undefined reference to `CABS@4'
mandel.o: In function `main':
D:\fbmat060\demo\complex\mandel.bas:191: undefined reference to `CMPLX@16'

Build error(s)
The same error's occurs with fbc0.25_windows (fbc.exe filedate 26-1-2013).

It compiles fine with fbc 0.24 and a few daily git builds from freebasic-portal.de (FreeBASIC-win32-git-20120521 and FreeBASIC-win32-git-20120730).
dkl
Site Admin
Posts: 3235
Joined: Jul 28, 2005 14:45
Location: Germany

Re: New FB release coming up

Post by dkl »

Thanks for testing so far, I'm going to look into the problems.

Strange that globbing isn't working for the binutils programs. The FBMath linking errors could surely be fixed by using the proper -l option to link in the needed libraries that contain the referenced functions and operators. Due to a change in the new FB version, FB libraries need to be recompiled with the new version before it will work automatically again (without the need for explicit -l options).

I cannot reproduce the issue with GTK+\combo_test.bas and glib.bi. It could be an EOL issue perhaps, for example:

Code: Select all

#DEFINE g_assert_cmpuint(n1, cmp, n2) _
           IF 0 = (CULNGINT(n1) cmp CULNGINT(n2)) THEN _
                  g_assertion_message (G_LOG_DOMAIN, __FILE__, __LINE__, G_STRFUNC, _
                    g_strdup_printf ("assertion failed (%s): (%" G_GUINT64_FORMAT " %s %" G_GUINT64_FORMAT ")", _

                                     #n1 " " #cmp " " #n2, CULNGINT(n1), #cmp, CULNGINT(n2)))
instead of:

Code: Select all

#DEFINE g_assert_cmpuint(n1, cmp, n2) _
           IF 0 = (CULNGINT(n1) cmp CULNGINT(n2)) THEN _
                  g_assertion_message (G_LOG_DOMAIN, __FILE__, __LINE__, G_STRFUNC, _
                    g_strdup_printf ("assertion failed (%s): (%" G_GUINT64_FORMAT " %s %" G_GUINT64_FORMAT ")", _
                                     #n1 " " #cmp " " #n2, CULNGINT(n1), #cmp, CULNGINT(n2)))
I can understand the wish for having external libraries in separate download packages. Maybe it's time we develop a downloader app for that. I can work on that, and we can use fbc's Sourceforge download area to host the downloads, and fbc's Git repo as version control system for the headers and build scripts (if any). If someone is ready to make a website for external libraries, I could live with that too.

Seeing how the changes to lbound/ubound on uninitialized arrays could break a lot of code doing @array(lbound(array)) <> NULL to check whether the array is "uninitialized", perhaps they should be reverted. Then we'd have to declare @array(lbound(array)) <> NULL as the way to check for uninitialized arrays though, instead of a check like ubound() < lbound(). An alternative is to use lbound=0 ubound=-1 instead of lbound=1 ubound=0. That can also break code, though I'd expect it to break less code.
Post Reply