fpc 2.4.0 released!

Menuda manera de empezar el año :)

Extracto de rigor del anuncio oficial de Marco van de Voort:

Platforms:
* New platform: Mac OS X/PowerPC64
* New platform: Mac OS X/x86_64
* New platform: Mac OS X/ARM (iPhone)
* New platform: Haiku/i386

Compiler:
* Support for Delphi-style resource handling
* Whole-program optimization infrastructure, which initially supports
program devirtualization and unused virtual method removal
* Much faster compilation of units containing many type-sections
* The ability to suppress individual hints/warnings/notes
* Several improvements to the DWARF debug information generation
* Fixes to the generics support
* Fixes to the interface delegation (implements) support
* Improved cpu register allocation
* Improved ARM/EABI support

RTL:
* Linearly scaling multi-threaded memory manager
* Support for (advisory) file locking on Unix-based platforms
when using the SysUtils file creation/opening routines
* Support for ANSI ISO Extended Pascal ReadStr/WriteStr
* A UnicodeString type that, while not yet equivalent to Delphi 2009′s
UnicodeString type, offers reference counted UnicodeString support on
the Windows, Linux, Mac OS X, FreeBSD and Beos/Haiku platforms.

Packages:
* Many improvements to the XML units
* Many improvements to the database units
* Updated the common Mac OS X Pascal interfaces to r241, including
header a translation of the CFNetwork framework
* The zipper unit now works correctly on big endian platforms

Se puede consultar los cambios para el usuario en el wiki oficial. Hacedlo con paciencia ;)

Some highlights are:

Platforms:
  * New platform: Mac OS X/PowerPC64
  * New platform: Mac OS X/x86_64
  * New platform: Mac OS X/ARM (iPhone)
  * New platform: Haiku/i386

Compiler:
  * Support for Delphi-style resource handling
  * Whole-program optimization infrastructure, which initially supports
    program devirtualization and unused virtual method removal
  * Much faster compilation of units containing many type-sections
  * The ability to suppress individual hints/warnings/notes
  * Several improvements to the DWARF debug information generation
  * Fixes to the generics support
  * Fixes to the interface delegation (implements) support
  * Improved cpu register allocation
  * Improved ARM/EABI support

RTL:
  * Linearly scaling multi-threaded memory manager
  * Support for (advisory) file locking on Unix-based platforms
    when using the SysUtils file creation/opening routines
  * Support for ANSI ISO Extended Pascal ReadStr/WriteStr
  * A UnicodeString type that, while not yet equivalent to Delphi 2009's
    UnicodeString type, offers reference counted UnicodeString support on
    the Windows, Linux, Mac OS X, FreeBSD and Beos/Haiku platforms.

Packages:
  * Many improvements to the XML units
  * Many improvements to the database units
  * Updated the common Mac OS X Pascal interfaces to r241, including
    header a translation of the CFNetwork framework
  * The zipper unit now works correctly on big endian platforms
Share on Twitter

Se acerca Freepascal 2.4.0 / Lazarus 0.9.28

Como nos comenta el amigo Vincent Snijders en la lista de correo de lazarus en su version en ingles se han habilitado las ramas en el svn para centrar el esfuerzo en la correccion de errores.

La direccion para freepascal es :

http://svn.freepascal.org/svn/fpc/branches/fixes_2_4/

y para lazarus :

http://svn.freepascal.org/svn/lazarus/branches/fixes_0_9_28/

Tambien se pueden usar los snapshots si no se quiere usar el svn y reportar todos los errores que se encuentren para realizar una buena version estable ;)

ACTUALIZACION : Se me paso por alto comentar que Jesus Reyes hizo lo propio para la lista de correo en castellano

Share on Twitter

Dia to Lazarus : Reviviendo dia2pas

Para los profanos del lugar voy a hacer una pequeña introduccion para que nadie se pierda ;)

Dia es un programa para hacer diagramas que soporta UML. Despues de muchas divagaciones me he decantado por el ya que es multiplataforma, almenos para mi :) y por que a partir de el se puede generar codigo automaticamente.

Para generar SQL se puede usar tedia2sql (Dia UML Diagram –> SQL Converter ) y para generar Clases FreePascal se puede usar Dia to Lazarus (dia2laz). Aqui viene la razon del articulo.

Dia2laz es un proyecto que he empezado para el fin que comentaba antes, convertir automaticamente un diagrama UML a clases que pueden ser usadas en nuestros proyectos. Para tal fin no he partido de cero si no que he adaptado dia2pas y he creado una GUI para que sea mas amigable.

Quien quiera probarlo puede bajarselo del servidor subversion de alasombra.net como se muestra a continuacion:

svn co svn://alasombra.net/dia2laz Dia2Laz

Para el resto os dejo un screenshot :)

dia2laz

El siguiente paso seria generar las clases compatibles con tiOPF aunque esto no se si implementarlo en dia2laz o hacerlo a modo de “plugin” para lazdatadesktop

Share on Twitter

Nuevo screencast sobre LRUT

Hace nada he subido un screencast a mi espacio de esnips donde muestro rapidamente las nuevas features de LRUT

  • Autocompletado en la sentencia SQL
  • Exportacion del informe a PDF (aunque esta es gracias a lazreport + powerpdf O:)
  • Uso de variables en la sentencia SQL

Sobra decir el lavado de cara que ha recibido la aplicacion gracias a los silk icons de famfamfam y sin mas dilacion el enlace : LRUTWithNewFeatures!

PD: Esta vez he usado recordMyDekstop en su version GTK, realmente sencillo :)

Share on Twitter

Nominaciones para 2009 SourceForge Community Choice Awards!

Me entero mediante el foro oficial de lazarus de estos premios y como no voy a apoyar al proyecto Lazarus :)

Fechas importantes para seguir el evento:

  • May 6 – Nominations open
  • May 29 – Nominations close
  • June 22 – Finalists announced, voting opens
  • July 20 – Voting closes
  • July 23 – Winners are announced at OSCON

Mis votaciones han sido…

  • Lazarus for Best Tool or Utility for Developers
  • Lazarus for Best Project

¿Y tu? ¿Ya has votado?

Share on Twitter

Freepascal 2.2.4 viene con fppkg

Hace mas de un mes del lanzamiento de la RC1 pero no he podido comentar antes el tema del fppkg y como me parece interesante ahi van mis 4 lineas ;)

No es un concepto novedoso ya quien conozca Python , Lua o otros tantos que desconozco posee de un gestor de paquetes desde linea de comandos. Este gestor permite instalar paquetes desde repositorios y aunque de momento solo se dispone de lnet espero que profilere la cantidad de paquetes disponibles para esta herramienta :)

En referencia al lanzamiento de la version 2.2.4 podeis ver la pagina del User Changes en el wiki oficial.


Share on Twitter

Muerte a lazSVN , larga vida a lazSVNPkg!

En un post anterior comentaba mi intecion de portar delphisvn a fpc/lazarus manteniendo la misma filosofia pero como iba algo apretado de tiempo hice publico el inicio del port por si alguien se animaba a ir avanzando y de paso me animaba a mi ;)

Durante este tiempo se ha subido a la rama trunk de lazarus ( desde la revision 17160, hace casi un mes ) un paquete llamado lazSVNPkg que ya hace lo que iba a hacer lazSVN con la diferencia de que LazSVNPkg es un wrapper del binario svn sin ningun interes en los bindings.

La verdad es que pinta muy bien ( solo lo he probado sobre linux ) pero se ve que Darius Blaszyk esta activo y con ganas de madurar el proyecto :)

Podeis encontrar informacion en el wiki de lazarus en la pagina referente a LazSVNPkg.

PD : Con esta nota doy por estancado el desarrollo de los bindings hasta nueva orden.

Share on Twitter

lazSVN , Subversion bindings para freepascal/lazarus

La idea inicial de todo esto era proveer a Lazarus de un paquete que le hiciera capaz de interactuar con un servidor Subversion en relacion al proyecto con en el que se esta trabajando. Esto no es nada nuevo ya que IDE’s como SharpDevelop o tantos otros que ahora mismo no me vienen a la cabeza ya disponen de esta feature ;P

Antes de empezar a hacer nada comprobe que no hubiera nada hecho ( para no reinventar la rueda ) y con lo unico que me encontre fue con delphisvn, un proyecto con la misma funcionalidad que se requiere pero para Delphi.

Por el camino descubri la existencia de un componente svn hecho por Vincent que lo que hace es usar el output del comando svn, una muy buena manera de no complicarse demasiado con los bindings. El mismo me comento que Ido estaba tambien con los bindings aunque tampoco lo tiene terminado.

Lo “unico” que he hecho con delphisvn ha sido importar el paquete, quitar la dependencia a los bindings apr que vienen y usar los bindings de freepascal e ir quitando la dependencia a Windows. Publico el proyecto sin terminar por que se me avecinan unos meses intensos y me parece una idea interesante como para caer en saco roto.

Ahora mismo la intencion es mantener los bindings de Subversion y hacer un miniBrowser, mas que nada para testear. Si alguien se anima se puede bajar el codigo de la siguiente manera o con vuestro cliente de SVN favorito ;)

svn co svn://alasombra.net/lazSVN lazSVN

Si necesitais algo en referencia al proyecto o a cualquier otra cosa hacerme llegar unas lineas a mi correo en gmail.com

Share on Twitter

Comprobar el estado de un servicio con Freepascal

La necesidad de esta implementacion ha sido por que no existen plugins para la monitorizacion de subversion y bacula en nagios ( o almenos no he encontrado ninguno ), luego he visto que existe check_tcp que de momento ya me vale :)

Lo que hace el programa es intentar conectar a un puerto de una ip y si lo consigue imaginamos que el servicio esta funcionando.

program check_port;

{$mode objfpc}{$H+}

uses
  {$IFDEF UNIX}{$IFDEF UseCThreads}
  cthreads,
  {$ENDIF}{$ENDIF}
  Classes, Sockets, SysUtils

  { you can add units after this };
Var
  Addr : TInetSockAddr;
  S : Longint;
  Sin,Sout : Text;
  tmp: String;

begin
  if ((ParamStr(1)='') or (ParamStr(2)='')) then
    begin
      Writeln('ERROR - Numero de parametros incorrectos');
      Writeln('Debes escribir ip puerto');
      exit;
    end;

  S:=fpSocket(AF_INET,SOCK_STREAM,0);
  if SocketError<>0 then
    writeln('Socket Error ' + IntToStr(SocketError));

  Addr.sin_family:=AF_INET;
  Addr.sin_addr := StrToNetAddr(ParamStr(1));
  Addr.sin_port:=htons(StrToInt(ParamStr(2)));

  If Not Connect (S,ADDR,SIN,SOUT) Then
    tmp := 'Error '
  else
    tmp := 'Exito ';

  WriteLn(tmp + 'en la conexion con ' + ParamStr(1) + ' al puerto ' + ParamStr(2));

end.

La funcion Connect esta deprecated pero como el nagios ya trae por defecto el plugin check_tcp tampoco era plan de perder invertir mas tiempo

Share on Twitter

fpc 2.2.2 released!

Despues de 2 meses de la primera release candidate ayer salio a la calle la nueva version estable del compilador de FreePascal, esto siginifica que esta mas cerca el lanzamiento de la nueva version estable de Lazarus, la 0.9.26 ;)

El anuncio del lanzamiento lo hizo Michael Van Canneyt en la lista de correo y los cambios mas importantes los podeis consultar en el wiki oficial.

Gracias a todos los involucrados por hacerlo posible.

Share on Twitter