IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)

Vous êtes nouveau sur Developpez.com ? Créez votre compte ou connectez-vous afin de pouvoir participer !

Vous devez avoir un compte Developpez.com et être connecté pour pouvoir participer aux discussions.

Vous n'avez pas encore de compte Developpez.com ? Créez-en un en quelques instants, c'est entièrement gratuit !

Si vous disposez déjà d'un compte et qu'il est bien activé, connectez-vous à l'aide du formulaire ci-dessous.

Identifiez-vous
Identifiant
Mot de passe
Mot de passe oublié ?
Créer un compte

L'inscription est gratuite et ne vous prendra que quelques instants !

Je m'inscris !

PureBasic 5.40 beta 1 est disponible sur votre compte

Le , par comtois

54PARTAGES

0  0 
La version 5.40 beta 1 est disponible sur votre compte. Je mettrai la liste des nouveautés traduites en français pour la version finale.

Hello folks,

It has been a while since the last PureBasic update, but it's now ready to roll ! It brings some important changes, but also a lot of new features:

  • - Added new Vector 2D library
  • - Added new CGI library with standard and FastCGI support
  • - Added Literal string escape support with the '~' operator (ex: a$ = ~"Hello\nWorld\n"
  • - Added EscapeString()/UnescapeString() function to allow escaping operation on any strings (variables etc.)
  • - Added EnumerationBinary to create bitmask enumeration automatically
  • - Added database parameter binding to ease request construction
  • - Added SetDatabaseBlob(), SetDatabaseFloat(), SetDatabaseDouble(), SetDatabaseLong()
  • - Added SetDatabaseQuad(), SetDatabaseString(), SetDatabaseNull()
  • - Added SHA2 and SHA3 (224/256/384/512-bit) support to Cipher library
  • - Added StringFingerprint()
  • - Added CRC32 support for StartFingerprint()
  • - Added ReceiveHTTPMemory(), IsJoint()
  • - Added RefreshDialog() to recalc dimension after a text change or similar
  • - Added "group" XML attribute for 'option' dialog gadget, to specify explicitly a group
  • - Added HTTPS and simple auth support for ReceiveHTTPFile() and GetHTTPHeaders()
  • - Added Auto redirect support for ReceiveHTTPFile() and ReceiveHTTPMemory()
  • - Added ASynchronous mode for ReceiveHTTPFile() and ReceiveHTTPMemory()
  • - Added HTTPProgress(), AbortHTTP() and FinishHTTP() to control async mode
  • - Added HTTPS/TLS support for SendMail()
  • - Added FlushPreferenceBuffers()
  • - Added CopyDebugOutput() to copy the debug output to the clipboard from code
  • - Added 7z archive creation
  • - Added tar (gz and bzip2) archive support for creation and decompression
  • - Added Full path in IDE recent files menu
  • - Added #PB_ProgressBar_Unknown for SetGadgetState() to indicate unknown progress
  • - Added #PB_UTF8/Ascii/Unicode support to ReadCharacter() and WriteCharacter()
  • - Added #PB_UTF8 support to URLEncoder() and URLDecoder (now the default mode)
  • - Added Windows 8.1/10 and OS X 10.9/10/11 support to OSVersion()
  • - Added #PB_Editor_xxx constants when using the 'Version' info on Windows
  • - Added #PB_Program_Ascii/Unicode/UTF8 support to RunProgram()
  • - Added linux/osx style flags for the commandline compiler on Windows to ease cross-platform scripts
  • - Added: #PB_File_SharedWrite support to ReadFile() and CreateFile()
  • - Added: 'IMPORTLIST' compiler interface to get all the predefined API functions
  • - Added: #Null$ special string constant to affect a real null value to a string (to free it completely). It can be
  • used as well for API function which sometimes accept NULL instead of a string address.
  • - Updated the Linux printer lib to use native GtkPrint instead of GnomePrint
  • - Updated the Windows compiler to VC++ 2013 for better code generation
  • - Updated SQLite to 3.8.10.2
  • - Fixed Zip archive support
  • - Fixed send mail and http request issues
  • - The default GTK version is now GTK3 on Linux. A gtk2 subsystem has been added for backward compatibility.
  • - The default string format for RunProgram() read/writestring is not UTF8 instead of Unicode
  • - Changed the Cipher lib to be modular (now UseMD5Fingerprint() and such commands needs to be used)
  • - Renamed ExamineFingerprint() to StartFingerprint()
  • - Renamed NextFingerprint() to AddFingerprintBuffer()
  • - Removed RemovePackFile()
  • - Changed: the SendMail() 'Asynchronous' parameter has been replaced by the #PB_Mail_Asynchronous flag.
  • - Removed: #PB_Packer_CompressedSize support for ZIP and 7z archives with PackerEntrySize()
  • - Removed: AvailableScreenMemory()
  • - Fixed: 'CONSTANTLIST' compiler interface, now string constants are returned as escaped strings.
  • - Changed: DLLImporter has been removed and .pbl files are no more supported. New 'import library' files can be
  • created using the '/IMPORT' switch of the pbcompiler.


The english documentation is up-to-date, and please check the new "Migration from and older PureBasic version" doc page to see all changes needed to update easily. This version introduce a new "import" resident file format, which uses an Import/EndImport block and create a file from it. It replaces the old ".pbl" format which is no more supported, and allow imported function arguments to be typed with pseudotype and more. We also published all the API imports file on the same SVN than the documention (available for all in read-only), so if you want to help to improve them (by putting the right type where needed, or changing the argument names to be more explicits) you can check out it and publish the patches: svn://svn.purebasic.fr/home/svn/Documentation/v5.40

This will be the last version supporting the ASCII mode, and will be maintained until 1 september 2017.

Have fun with PureBasic !

The Fantaisie Software Team

Une erreur dans cette actualité ? Signalez-nous-la !

Avatar de comtois
Responsable Purebasic https://www.developpez.com
Le 01/09/2015 à 11:36
Starting with 5.40, we changed the way of importing API functions (now it's much more robust and flexible), so we need to have strong typing of every args (especially strings). If you encounter one API call which is incorrectly declared, just paste it here and we will fix it.
La façon d'importer les fonctions de l'API change à partir de la 5.40. Le typage est plus strict que dans les versions précédentes, aussi si vous constatez que la déclaration d'une fonction n'est pas correcte, n'hésitez pas à signaler le problème ici pour qu'il soit corrigé.

Source de l'information
0  0 
Avatar de comtois
Responsable Purebasic https://www.developpez.com
Le 01/09/2015 à 12:46
Explications de Fred pour utiliser la biblio CGI :

To test CGI on Windows, I installed "easyphp" http://www.easyphp.org/ , which install all needed tools, then added this to the apache conf file:

Code : Sélectionner tout
ProxyPass /testfcgi/ fcgi://localhost:5600/
and uncommented the lines:

Code : Sélectionner tout
1
2
3
LoadModule proxy_module modules/mod_proxy.so
LoadModule proxy_fcgi_module modules/mod_proxy_fcgi.so
Once restarted, apache should redirect the url http://localhost/testfcgi to the port 5600

Then compile the example found in WaitFastCGIRequest() doc and it should work.

On linux, you need to do the same (installing apache and enabling mod proxy fastcgi)
Source de l'information
0  0 
Avatar de comtois
Responsable Purebasic https://www.developpez.com
Le 01/09/2015 à 12:52
Un utilisateur a comparé les différents formats de compression disponibles avec la 5.40, voici son test et ses résultats :

Purebasic spoils us with 5 different built-in compression codecs (6 if you count the uncompressed bundling of TAR, or 7 if you count the deprecated x86-only JCALG1)
These are: ZIP, LZMA, BriefLZ, TAR.GZip, and TAR.BZip2 (ps. Fred it would be nice if BZIP2 and GZIP were available on their own, rather than having to use TAR bundling! TAR is ewww but BZIP2 is awesome!)

So here's a simple test program to help find out which of Purebasic's built-in packers is best suited to the data we want to compress/decompress.

The variables are PACK TIME, UNPACK TIME, PACK SIZE/RATIO, and PB EXE SIZE. Each packer of course has its own strengths and weaknesses!

Here's the results of a 91 megabyte SQL dump (UTF8 textfile). Tested with Purebasic x86 5.40 LTS in Windows XP. I havent had a chance to do x64 test.
I ran each test twice and only recorded the 2nd result to ensure 'even caching':

Code : Sélectionner tout
1
2
3
4
5
6
7
                ZIP        LZMA       BriefLZ    TAR        TAR.GZ     TAR.BZ2       "Winning" order (TAR excluded):
                --------------------------------------------------------------       ----------------
PACK TIME       3175ms     67647ms    1653ms     1141ms     3325ms     9464ms        BriefLZ, ZIP, TAR.GZ, TAR.BZ2, LZMA
UNPACK TIME     1532ms     2254ms     2273ms     1252ms     1332ms     3145ms        TAR.GZ, ZIP, LZMA, BriefLZ, TAR.BZ2
PACK SIZE       25218579   18887882   34247532   94030848   25218522   19782588     
PACK RATIO      26.820%    20.087%    36.422%    100.002%   26.820%    21.039%       LZMA, TAR.BZ2, TAR.GZ, ZIP, BriefLZ
PB.EXE SIZE     207,872    291,328    15,872     219,648    219,648    219,648       BriefLZ, ZIP, TAR.GZ/TAR.BZ2, LZMA
So, from this one test with this dataset, we can summarize:
ZIP: A great balance of compression and speed.
LZMA: Extremely slow compression, but thats the price you pay for the very best compression ratio.
BriefLZ: Extremely good performance in both packing & unpacking, and the resulting exe is still TINY unlike the others. 36% compression to ZIPs 26% means it's not great, but still pretty good.
TAR.GZ: On par with ZIP.
TAR.BZ2: Compression ratio so very close to LZMA yet compression speed is 7x faster. Decompression 1.4x slower than LZMA however.

Quite a nice menu to choose from, depending on ours projects individual needs
One of the nice surprises I found was that the BriefLZ codec only adds 10kb to the exe - thats with full compress + decompress support! And its speed of both is very good, especially compression but still respectable decompress speed. Its compression ratio is also quite respectable too, compressing my 91mb sample file to 36%. Compared to ZIPs 27% its not great but still pretty good, and overall I think it makes an excellent packer for executable resources!

Code : Sélectionner tout
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
#PACKER = 1  ;1=ZIP  2=LZMA  3=BriefLZ  4=TAR  5=TAR.GZ  6=TAR.BZ2

sFileToPack.s = "c:\temp\91mb.txt"            ;Test file to compress. Ensure you have write access to c:\temp\
sFileToSave.s = "c:\temp\mytemparchive"       ;Save to this archive file (minus extension)

CompilerIf #PB_Compiler_Debugger = 1
  MessageRequester("Disable the debugger first", "Error": End   ;in future ill use CompilerError
CompilerEndIf


CompilerIf #PACKER = 1
  UseZipPacker()
  sSaveFile.s = sFileToSave + ".zip"
  PackerId = #PB_PackerPlugin_Zip
  sResult.s = "Packer: ZIP" + #CRLF$
CompilerElseIf #PACKER = 2
  UseLZMAPacker()
  sSaveFile.s = sFileToSave + ".lzma"
  PackerId = #PB_PackerPlugin_Lzma
  sResult.s = "Packer: LZMA" + #CRLF$
CompilerElseIf #PACKER = 3
  UseBriefLZPacker()
  sSaveFile.s = sFileToSave + ".brieflz"
  PackerId = #PB_PackerPlugin_BriefLZ
  sResult.s = "Packer: BriefLZ" + #CRLF$
CompilerElseIf #PACKER = 4
  UseTARPacker()
  sSaveFile.s = sFileToSave + ".tar"
  PackerId = #PB_PackerPlugin_Tar 
  sResult.s = "Packer: TAR" + #CRLF$
CompilerElseIf #PACKER = 5
  UseTARPacker()
  sSaveFile.s = sFileToSave + ".tar.gz"
  PackerId = #PB_PackerPlugin_Tar | #PB_Packer_Gzip   
  sResult.s = "Packer: TAR.GZ" + #CRLF$
CompilerElseIf #PACKER = 6
  UseTARPacker()
  sSaveFile.s = sFileToSave + ".tar.bz2"
  PackerId = #PB_PackerPlugin_Tar | #PB_Packer_Bzip2   
  sResult.s = "Packer: TAR.BZ2" + #CRLF$
CompilerElse
  MessageRequester("Invalid packer id","Error"): End
CompilerEndIf


DeleteFile(sSaveFile)
OrigSize.i = FileSize(sFileToPack)
hPack.i = CreatePack(#PB_Any, sSaveFile, PackerId)
If hPack = 0
  MessageRequester("Error","CreatePack failed")
Else
  Time1.i = GetTickCount_()
  AddPackFile(hPack, sFileToPack, "packed.dat") 
  TimePack.i = GetTickCount_() - Time1
  ClosePack(hPack) 
   
  hPack.i = OpenPack(#PB_Any, sSaveFile, PackerId)
  If hPack = 0
    MessageRequester("Error","OpenPack failed")
  Else   
    DeleteFile("c:\~extract.dat")
    Time1.i = GetTickCount_()
    Result = ExaminePack(hPack)
    NextPackEntry(hPack)
    Unpacked.i = UncompressPackFile(hPack, "c:\~extract.dat")
    TimeUnpack.i = GetTickCount_() - Time1
    ClosePack(hPack)
  EndIf
 
  sResult = sResult + "Packed in " + Str(TimePack) + "ms" + #CRLF$ +
            "Unpacked in " + Str(TimeUnpack) + "ms" + #CRLF$ +
            "Packsize=" + Str(FileSize(sSaveFile)) + " (" + StrF((FileSize(sSaveFile)/ OrigSize) * 100,3) + "%)" + #CRLF$ +
            "Origsize=" + Str(OrigSize) + "  Unpacked=" + Str(Unpacked) + #CRLF$ +
            "Executable size=" + Str(FileSize(ProgramFilename()))
  MessageRequester("Result", sResult)
  SetClipboardText(sResult) 
EndIf
0  0 
Avatar de comtois
Responsable Purebasic https://www.developpez.com
Le 01/09/2015 à 14:06
Fred vient de mettre en place un WebSVN pour consulter les fichiers de la doc sans Subversion.

I just setup a WebSVN to browse the public PureBasic SVN:

http://svn.purebasic.fr:8080/websvn

You can find all the Windows API imports in Imports/Windows
C'est utile pour ceux qui veulent contribuer à l'amélioration des déclarations des fonctions API, voir l'exemple de ts-soft ci-dessous :

Code : Sélectionner tout
1
2
3
4
5
6
7
8
9
10
11
12
13
Import "Advapi32.lib"
  RegCloseKey_(hKey)
  RegConnectRegistry_(lpMachineName.s, hKey, *phkResult)
  RegCreateKey_(hKey, lpSubKey.s, *phkResult)
  RegCreateKeyEx_(hKey, lpSubKey.s, Reserved, lpClass.s, dwOptions, samDesired, lpSecurityAttributes.s, *phkResult, *lpdwDisposition)
  RegDeleteKey_(hKey, lpSubKey.s)
  RegDeleteValue_(hKey, lpValueName.s)
  RegEnumKey_(hKey, dwIndex, *lpName, cchName)
  RegEnumKeyEx_(hKey, dwIndex, *lpcName, lpReserved, *lpClass, *lpcClass, *lpftLastWriteTime)
  RegEnumValue_(hKey, dwIndex, *lpValueName, *lpcchValueName, lpReserved, *lpType, *lpData, *lpcbData)
  RegFlushKey_(hKey)
  RegGetKeySecurity_(hKey, SecurityInformation, *pSecurityDescriptor, *lpcbSecurityDescriptor)
EndImport
Source de l'information
0  0 
Avatar de comtois
Responsable Purebasic https://www.developpez.com
Le 03/09/2015 à 17:00
Une nouvelle beta est disponible sur votre compte, elle corrige pas mal de bogues et comporte quelques nouvelles fonctions 3D.

Beta 2 is out ! It should include all fixed bugs since beta 1 and add some 3D related commands:

  • - Added: CreateCone(), CameraCustomParameter(), ResizeCamera()
  • - Added: #PB_Entity_DisableContactResponse and #PB_Entity_EnableContactResponse for SetEntityAttribute()
  • - Added: #PB_Entity_ConeBody, #PB_Entity_PlaneBody
  • - Added: FreeEntityBody(), FreeTerrainBody()
  • - Added: ApplyEntityTorque(), ApplyEntityTorqueImpulse()
  • - Added: Added 'CollisionGroup' and 'CollisionMask' parameter for RayCollide()
  • - Renamed: EntityPhysicBody() to CreateEntityBody()
  • - Renamed: TerrainPhysicBody() to CreateTerrainBody()


0  0 
Avatar de comtois
Responsable Purebasic https://www.developpez.com
Le 04/09/2015 à 16:54
Une nouvelle beta est disponible sur votre compte, elle corrige pas mal de bogues et comporte quelques nouveautés.

Beta 3 is available ! It should include all fixed bugs since beta 2 and add a few stuffs:

- Added: #PB_Ascii, #PB_UTF8 and #PB_Unicode support to Create/Open/ReadFile() to set the default write/read mode
- Added: #PB_ByteLength flag for PeekS() and #PB_UTF8 (only)
0  0 
Avatar de comtois
Responsable Purebasic https://www.developpez.com
Le 22/09/2015 à 20:12
J'ai laissé passer quelques bêtas, nous en sommes à la beta 7, elle est disponible sur votre compte.

Hello folks,

Beta 7 is out and should bring more fixes, especially on OS X. Have fun !

OK, the quick fix was half baked, so hopefully beta 6 will solve it completely. Happy testing !

Beta 5 is out and only fix one bug with API and string concatenation (which could prevent further testing). On a side note, we have signed the OS X apps since the 5.40 beta, can OS X users tests if it works with gatekeeper activated ? The IDE should open after displaying a warning message without changing the default security features.

Beta 4 is available ! It should include many bug fixes since beta 3. Also some minor additions:

- Added: #Empty$ constant
- Added: #PB_ByteLength support to MemoryStringLength()

- Changed: The DotPath(), DashPath() & CustomDashPath() commands now have an optional 'StartOffset' parameter
- Changed: The 'Distance' parameter of DotPath() has been changed: It now refers to the distance between the center of each dot (not the space between the dots)
0  0 
Avatar de comtois
Responsable Purebasic https://www.developpez.com
Le 25/09/2015 à 17:30
La beta 8 est disponible sur votre compte, la version finale ne devrait pas tarder.
Beta 8 is out and brings more fixes, especially on Linux and libcurl. Don't hesitate to test it with your projects, as we are getting closer to release, thanks !
0  0 
Avatar de comtois
Responsable Purebasic https://www.developpez.com
Le 12/10/2015 à 18:00
La beta 10 est disponible sur votre compte, c'est le moment de tester à fond, la version finale ne devrait plus tarder.

Beta 10 is out and should iron out the lastest important fixes before the release. Don't hesitate to test it with your projects, thanks !

Beta 9 is out and brings more fixes. Don't hesitate to test it with your projects, as we are getting closer to release, thanks !
0  0