Showing posts with label fuzuli. Show all posts
Showing posts with label fuzuli. Show all posts

Sunday, March 22, 2015

Introduction to Fuzuli : JFuzuli REPL


JFuzuli is the JVM implementation of our programming language Fuzuli which is based on LISP syntax and Algol family programming logic. Fuzuli is a modern collaboration of these two separate family of languages.

Let's try JFuzuli:




1. Download the Jar 

The current compiled jar of JFuzuli interpreter is release candidate 1.0. You can download it using the link https://github.com/jbytecode/fuzuli/releases/tag/v1.0_release_candidate. You can always find the newest releases in site JFuzuli Releases.

2. Open the Command Prompt

After downloading the jar file, open your operation system's command prompt and locate the jar file by using cd (change directory) command.

3. Start trying it!

In command prompt, type

java -jar JFuzuli.jar

to start. You will see the options:

Usage:
java -jar JFuzuli.jar fzlfile
java -jar JFuzuli.jar --repl
java -jar JFuzuli.jar --editor


You can specify a fuzuli source file to run. The option --repl opens a command shell.  The last option --editor opens the GUI.  Let's try the command shell. 

java -jar JFuzuli.jar --repl
F: 

The prompt F: waits for a convenient Fuzuli expression. Now we can try some basic commands:

F: (+ 2 7)
9.0
F: (- 7 10)
-3.0
F: (require "lang.nfl")
0.0
F: (let mylist '(1 2 3))
[1.0, 2.0, 3.0]
F: (first mylist)
1.0
F: (last mylist)
3.0
F: (length mylist)
3
F: (nth mylist 0)
1.0
F: (nth mylist 1)
2.0


Well, we introduce some basic operators, data types and commands here but not all of them. We always put an operator or command after an opening parenthesis, arguments follow this operator and a closing parenthesis takes place. This is the well-known syntax of LISP and Scheme. So what is the language properties, what are the commands, how to try more Fuzuli codes in JFuzuli??

Fuzuli Language home page: http://fuzuliproject.org/
Have a nice read!


Friday, March 13, 2015

Migration of RCaller and Fuzuli Projects to GitHub

Since Google announced that they are shutting down the code hosting service 'Google code' in which our two projects RCaller and Fuzuli Programming Language are hosted.

We migrated our projects into the popular code hosting site GitHub.

Source code of these projects will no longer be committed in Google code site. Please check the new repositories.

GitHub pages are listed below:





RCaller:

https://github.com/jbytecode/rcaller




Fuzuli Project:

https://github.com/jbytecode/fuzuli



Friday, August 22, 2014

Javascript and Fuzuli Integration

JFuzuli, the Java implementation of Fuzuli Programming Language now supports limited Javascript integration.

JFuzuli currently supports passing Fuzuli variables to Javascript environment, passing Javascript variables to Fuzuli environment, embedding Javascript code in any part of a Fuzuli source code.

The full support is planned to have ability of calling Fuzuli functions directly from within Javascript.

Here is the examples. This is the simplest one to demonstrate the basic usage of Javascript support:



In the example above, the variable a is set to 10 in Fuzuli part, is incremented by 1 in Javascript part and is printed in the Fuzuli part again. After all, value of a is 11.





In the example above, the variable message is first defined in Javascript section and was null in Fuzuli section at the top. And also, it is clear that the variable message is defined using the var keyword in Javascript section. After all, at the Fuzuli section, message is printed with its value which was set in Javascript section.


The example above is more interesting as it has a function which is written in Fuzuli language, but the function has its body written in Javascript! In this example, square function has a single parameter x. x is then passed to Javascript body and the result is calculated. Value of result is then returned in Fuzuli. At the end, the Fuzuli function call  (square 5) simply returns 25 which is calculated by Javascript.


Passing Arrays 

Because the list object in Fuzuli is simply a java.util.ArrayList, all public fields and methods of ArrayList are directly accessable in Javascript section. Look at the example below. In this example a list object is created with values 1,2 and 3, respectively. In Javascript section, the values of this object is cleaned first and then 10 and 20 are added to the list. Finally, in the Fuzuli section, object is printed only with values 10 and 20.


List objects can be created directly in Javascript section. Look at the example below. Since JFuzuli interpreter uses the javax.scripting framework, a Java object can be created with new keyword. The variable a is a list object in Fuzuli section again and the printed output includes two values of 10 and 20.



You can try similar examples using our online interpreter in url 

http://fuzuliproject.org/index.php?node=tryonline

Hope you get fun with Fuzuli...







Monday, July 28, 2014

Passing Fuzuli Expressions to Functions

Fuzuli Programming Language has many features borrowed from many popular languages such as C and Java as well as Lisp and Scheme.

It is known that a function pointer can be passed to a function in C and C++, whereas, we must declare the structure of a function using interfaces for doing same job in Java.

In Fuzuli, a Fuzuli source code can be directly passed to a function. This feature allows us to create generic functions easly. Let's show it using an example.

The code below creates four expressions that sum, subtract, product and divide two numbers, respectively.


(let expr1 (expression (+ a b)))
(let expr2 (expression (- a b)))
(let expr3 (expression (* a b)))
(let expr4 (expression (/ a b)))


The expression directive defines a runnable code using the directive eval as we will see later. Let's define a generic function that changes its behaviour respect to a expression parameter:

(function generic_function (params e x y)
   (let a x)
   (let b y)
   (return (eval e))
)


The function generic_function takes three parameters. The first one defines the real action. x and y are parameters that will be passed to expression later. Let's call this generic function using previously defined expressions:

(let enter "\n")
(let x1 15)(let x2 5)
(print "x1=" x1 ", x2=" x2 enter)
(print "+ : " (generic_function expr1 x1 x2) enter)
(print "- : " (generic_function expr2 x1 x2) enter)
(print "* : " (generic_function expr3 x1 x2) enter)
(print "/ : " (generic_function expr4 x1 x2) enter)

In first line we define the enter variable for printing output with line feed. In second line, we set x1 to 15 and x2 to 5. In third line, we are reporting the values of these variables.

The whole story lies at last four lines. In line four, we are calling the function generic_function using the predefined summation expression. In the next line, the same function is called using a different expression which calculates x1 - x2 . As it is clear to see that, last two lines calls the same generic function using two different expressions for getting the product and division of two numbers, respectively.

The output is :

x1=15.0, x2=5.0
+ : 20.0       
- : 10.0       
* : 75.0       
/ : 3.0        



Happy readings...


Notes:

You can try this code using the online interpreter: http://fuzuliproject.org/index.php?node=tryonline
or you can download the JFuzuli Editor: http://mhsatman.com/fuzuli-programming-language-facebook-face/


Sunday, July 27, 2014

Fuzuli Programming Language and Editor

Our programming language, Fuzuli, now has a new interpreter written in Java which is officially called JFuzuli.

You can try it online at site http://fuzuliproject.org/index.php?node=tryonline

We also get our first JFuzuli Editor ready for downloading at https://drive.google.com/file/d/0B-sn_YiTiFLGRHdVSUQ2cFZyT0U/edit?usp=sharing

Please feel free and do not hesisate to share your thoughts about the language and the interpreter.

You can also visit the Facebook page which is aimed to inform Turkish users using the address https://www.facebook.com/FuzuliProgramlamaDiliVeYorumlayici?ref=hl







Monday, April 21, 2014

Fuzuli for Java Online Interpreter

JFuzuli, Java version of Fuzuli interpreter, is now the main implementation of Fuzuli Programming Language. There is always a gossip on the efficiency of C and C++ over Java and people who starts to writing computer programs are encouraged to make a decision between them but not the Java. However, when you don't do things correctly, C and C++ are the worst programming languages in means of efficiency. Allocating memory and garbage collection are important issues and should be handled by user or other third party libraries but not by the language itself. As not being a computer scientist, my both C++ and Java codes include algorithmic errors and my Java codes run faster than the code written in C++. I can confess that is my fault! But it is not false to say that a big portion of programmers does not either write the correct code and their C++ code does not reach its maximum efficiency. Finally, our Java implementation is faster than the C++ version.

Lets try our online interpreter! Fuzuli is a little bit Lisp, Scheme, C and Java! Try it, learn it and join the development team. The link for the online interpreter is http://fuzuliproject.org/index.php?node=tryonline

The screenshot of the online algorithm is given below.


Thursday, August 2, 2012

Fuzuli Android Application and Online Interpreter

We have just released the online interpreter and the Android application of Fuzuli, our programming language and interpreter.

You can simply run your Fuzuli programs using the site Fuzuli Online Interpreter. You will see a small hello world program. Since it only writes the "Hello world" string on the screen, it is not really relevant but makes sense. Every single programming language has its own Hello world! Type your program after deleting classical hello world program then click the RUN button. If your program is correct, you will see the output of your program at the bottom of the code. The other option for using our online interpreter is to download and install the Android application. You can download and install Fuzuli Online Interpreter for Android here. The file you will have found is ready to download and install. Do not forget to uninstall older versions if you have already installed one.

Have fun with Fuzuli!

Tuesday, July 31, 2012

Garbage Collection Mechanism of Fuzuli Interpreter

Fuzuli, our programming language and interpreter, has a garbage collection utility since its early stages. Garbage collection is an old term in computer science.

A chunk of memory is allocated for each software program by operating systems. Programs also allocate memory at runtime. Those programs are responsable to free the memory they allocated. Operations for allocating and freeing memory areas are performed using single commands such like malloc, free, new and delete in C and C++.

But allocating and freeing the chunks of memory is not that easy. When a reference to a dynamically created object is broken, the object remains suspended in the memory. Look at code below:


(let a (list 5 6 10 "Text"))
(let a NULL)

In the code above, a list of 5, 6, 10 and Text is created and referenced by the variable 'a'. Then, a is set to NULL. After all, what happened to list and its objects? The answer is easy. They suspended in the memory and waiting to be cleaned.

Ok, what about the code given below?


(let b 11)
(let a (list 5 6 10 b))
(let a NULL)


In the code above, a is linked to a list which contains 5,6,10 and b. b is an other variable which has a value of 11. After setting the value of 'a' to NULL, there is some garbage but this is a little bit different. Cleaning the object referenced by 'a' also means cleaning the object referenced by b. But we don't 'b' to be cleaned, it should stay alive. Reference Counting now comes into account. Counting references given to an object gives more information about the aliveness status of an object. In this example, the integer object has only one references in (let b 11).

When the code (let a (list 5 6 10 b)) runs; references of objects 5, 6, 10 and b increased by 1. The old reference count of b was 1, so b has a reference counting of 2. When (let a NULL) runs; reference counts of all objects contained by 'a' are decreased by 1. After all, the object which have reference count of 0 are deleted from the memory. The object 'b' is still alive!. Fuzuli uses this mechanism.

Garbage collecting in Fuzuli is automatic by default. Calling


(gc false)


simply disables the automatic garbage collector. Calling

(gc true)


enables the garbage collector. Whenever the garbage collector is enabled or disabled, it can be called manually. Simply calling (gc) triggers the garbage collector:

(let total (gc))
(print "Number of gargabe collected: " total "\n")


In the example below, a list of 1,2,...,1000000 created and referenced by a variable 'a'. Then a is set to NULL and generated garbage is collected manually.

(gc off)
(let limit 1000000)
(print "Creating array of 0..." limit "\n")
(let a (: 0 limit))
(print "Array created with length " (length a) "\n")
(dump)
(let a NULL)
(print "Gargabe Collecting manually:\n")
(gc)
(dump)


The output is

Creating array of 0...1000000
Array created with length 1000001
Environment Deep: 0
# Sub Environments: 0
# Tokens 1000054
Gargabe Collecting manually:
Environment Deep: 0
# Sub Environments: 0
# Tokens 67


 In the example above, there are 1000054 garbage objects before manual garbage collection. After garbage collecting, there are 67 objects which includes the source code itself. It was a nice experiment to implement a garbage collector in Fuzuli. Hope you have fun with it!

Thursday, July 19, 2012

Multithreading in Fuzuli Programming Language

Since our last commit, Fuzuli supports multithreading. This is the latest milestone that Fuzuli reached in revision tree of 0.1.x.

Fuzuli's multithreading capability stands on the well known boost threading library which will be a built-in package in next C++ standard.

Creating and running a thread in Fuzuli is easy. Define a function and create a thread for this function then call the thread_join method. The join method will wait until the function finishes its job. More than one threads can run at the same time in a time-sharing manner. Multithreading functions are stored thread.nfl, which is now a standard in Fuzuli API.

Lets give an example:


(require "/usr/lib/fuzuli/nfl/thread.nfl")

(function f (params)
 (block
  (print "F started\n")
  (foreach i in (: 1 10)
   (print "f\n")
   (thread_yield)
   (thread_sleep 100)
  )
  (return 0)
 )
)

(function g (params)
 (block
  (print "G started\n")
  (foreach i in (: 1 10)
   (print "g\n")
   (thread_yield)
   (thread_sleep 100)
  )
  (return 0)
 )
)

(function h (params)
 (block
  (print "H started\n")
  (foreach i in (: 1 10)
   (print "h\n")
   (thread_yield)
   (thread_sleep 100)
  )
  (return 0)
 )
)

(let t0 (thread "f"))
(let t1 (thread "h"))
(let t2 (thread "g"))

(thread_join t0)


In the example given above, we have three function f(), g() and h(). Those functions print messages "F started", "G started" and "H started" at the top of their bodies. A foreach loop then count from 1 to 10 and wait 100 milliseconds after each step. The output is shown below:

F started
H started
G started
g
h
f
g
h
f
g
h
f
g
h
f
g
h
f
f
g
h
f
h
g
g
f
h
g
h
f
f
g
h

Functions in this example run simultaneously. thread_join was called on t0, so whenever the function f() finishes its job, program ends. thread_yield is called for giving a chance to run to another threads. thread_sleep waits for given milliseconds if needed.That's all.


Saturday, June 16, 2012

List Operations in Fuzuli Programming Language

Fuzuli, our new programming language and interpreter has several internal functions for list operations. Arrays are prominent objects of programming languages. Although many other programming languages use brackets for setting and getting values of array, this operator is not defined in Fuzuli. Lists are similar to Lisp's lists but they are different. As we said before, Fuzuli is neither a Lisp nor an Algol family, but it is something like a combination of them.
Any one dimensional Fuzuli list can be created using the list keyword. This keyword corresponds to internal ListExpression and can take infinite number of parameters to hold. An example for use of list keyword is given below:

(let a (list 12 3 4 5 "Hello" 5 4 2 10 2.13))

In the code above, a is list of elements 12, 3, 4, 5, "Hello", 5, 4, 2, 10, and 2.13, respectively. As we can see, the list a can hold elements from any type.

The keyword nth corresponds to the function nth for accessing elements using their indices. An example for use of nth is given below:

(let element (nth a 4))

The variable element now holds the value "Hello" because it has the indices of 4. Note that the index of first elements is zero. 4th element of list a can be changes as

(set a 4 "Fuzuli")

and variable a contains these elements:

12 3 4 5 "Fuzuli" 5 4 2 10 2.13


Lists can be constructed automatically in an increasing manner from an integer a to integer b. The code shown below is for creating a list from 1 to 1000:

(let biglist (: 1 1000))

 Ok! We borrowed this command from R because it is very nice and easy! Let's get the length of this list:

(let mylen (length biglist))

and mylen carries the value of 1000, the number of elements contained by biglist. One may need to append or prepend elements to lists. For those, we have append and prepend keywords for appending and prepending.

# Creating a list
(let mylist (list 1 2 3 4 5 6))

# Appending 7 to the end of mylist
(append mylist 7)

# Put a zero at the beginning
(prepend mylist 0)

# Print out the list
(print mylist)

The output is

[0, 1, 2, 3, 4, 5, 6, 7]

Well! How about removing elements? Lets remove the "4" from this list:

# Removing 4
(remove mylist 4)

The output is

[0, 1, 2, 3, 5, 6, 7]

There is also a find keyword for determining location of a given element in a list. Look at the code:

(let mylist (list "Jan" "Jun" "Aug" "Sep"))
(let index (find mylist "Jun"))
(print index)


The output is 1 because "Jun" has the index of 1 in array mylist.

There are extra functions in utils.nfl package for list operations. Those functions are not built-in but shipped within Fuzuli. Current utils.nfl package contains shuffle, sorta and sortb functions for mixing, ascending sorting and descending sorting of elements of a given list.

Another important point of Fuzuli lists is multi-dimensionality. We mentioned that Fuzuli lists can contain any type of objects. These object can exactly be an other list! And those list can take lists as their elements and so on... Let's create a 2x2 matrix of elements.

(let matrix
    (list
        (list 1 2)
        (list 3 4)
    )
)

(print matrix)

The output is


[[1, 2], [3, 4]]

The matrix given below has a dimension of 3x5:

(let matrix
    (list
        (list 1 2 3 4 5)
        (list 6 7 8 9 10)
        (list 11 12 13 14 15)
    )
)

(print matrix)

The output is

[[1, 2, 3, 4, 5], [6, 7, 8, 9, 10], [11, 12, 13, 14, 15]]

Accessing elements of multi-dimensional lists is easy! Follow the code:

(let matrix
    (list
        (list 1 2 3 4 5)
        (list 6 7 8 9 10)
        (list 11 12 13 14 15)
    )
)

(print (nth (nth matrix 0) 0) "\n")
(print (nth (nth matrix 1) 3) "\n")
(print (nth (nth matrix 2) 3) "\n")
(print (nth (nth matrix 2) 4) "\n")


The output is

1
9
14
15


becase matrix[0][0] is 1, matrix[1][3] is 9, matrix[2][3] is 14 and matrix[2][4] is 15 in C or Java notation.

Have fun with Fuzuli lists!







Sorting data with Fuzuli

In this article, I want to show how to sort data vectors using Bubble sort and Quick sort. Bubble sort is known to be one of the most in-efficient sorting algorithms. Quick sort has lower order of magnitude and it is known to be the most efficient one. There are tons of articles about these algorithms around the Internet and I don't want to give a detailed description and comparison of them.


Let me show how to write them in Fuzuli.



Bubble Sort in Fuzuli:


(def mylist LIST)
(let mylist (list 5 6 4 2 3 9 1 10 5))

(print "Original List:\n")
(print mylist "\n")

(for (let i 0) (< i (length mylist)) (inc i)
    (for (let j (clone i)) (< j (length mylist)) (inc j)
        (if (> (nth mylist i) (nth mylist j))
            (block
            (let temp (nth mylist i))
            (set mylist i (nth mylist j))
            (set mylist j temp)
            )
        )
    )
)

(print "After sorting:\n")
(print mylist "\n")


The output is :

Original List:
[5, 6, 4, 2, 3, 9, 1, 10, 5]

After sorting:
[1, 2, 3, 4, 5, 5, 6, 9, 10] 

 The code is similar to one written in both Lisp, C or Java! Hope the taste of code is good for you. Next one is the Quick sort:

Quick Sort in Fuzuli:


(def mylist LIST)
(let mylist (list 5 6 4 2 3 9 1 10 5))

(print "Original List:\n")
(print mylist "\n")



(function partition (params arr left right)
 (block
  (def i INTEGER) (def j INTEGER)(def tmp INTEGER)
  (def pivot INTEGER)
  (let i (clone left)) (let j (clone right))
  
  (let pivot (nth arr (/ (+ left right) 2)))
  

  (while (<= i  j)
   (block
             (while (< (nth arr i) pivot)(inc i))
                (while (> (nth arr j) pivot) (-- j)) 
       (if (<= i  j) 
     (block
            (let tmp  (nth arr i)) 
               (set arr i (nth arr j))
               (set arr j  tmp)
               (++ i)
               (-- j)
        )
    )
   )
  )
  (return i)
 )
)


(function quicksort (params arr left right) 
 (block
  (def index INTEGER)
  (let index (partition arr left right))
  (if (< left  (- index 1))
     (block
             (quicksort arr left  (- index 1))
   )
  )

       (if (< index right)
   (block
             (quicksort arr  index  right)
   )
  )
 )
)

(quicksort mylist 0 (- (length mylist) 1))
(print "After sorting:\n")
(print mylist "\n")


The output is :

Original List:
[5, 6, 4, 2, 3, 9, 1, 10, 5]

After sorting:
[1, 2, 3, 4, 5, 5, 6, 9, 10]

which is the same for bubble sort but the latter is faster.

Hope you like the code. See you next!

Thursday, June 14, 2012

Calculating Levenshtein Distance Between Two Strings in Fuzuli

Hi! I am so happy I can code with Fuzuli programming language. In this article, I'll show you how to calculate the distance between two strings on Fuzuli. I usually use Levenshtein distance on PHP. This situation is the same on Fuzuli. Before introducing my sample, sharing the Levenshtein function would be nice, I think.






For this article, I've got an example here: 
The code given belown is about how to calculate the distance between strings. 

(require "nfl/io.nfl")
(require "nfl/string.nfl")

(print "Please enter a word for calculating distance: ")
(let word(readline))

(let Array (list "windows" "ubuntu" "android"))

(foreach i in Array
   (block
  (let distance (levenshtein word i))
  (print distance " for " i "\n")
    )
)

(require "nfl/string.nfl")
(require "nfl/io.nfl")


The code shown above shows how we import a required package. string package is for Levenshtein function, namely it is not "fuzuli" :) io package is for readline.


You can run it by typing:

fuzuli levenshtein.fzl
Screen View
Screen View
If you compare screen views, you can see the differency. First, I wrote "fuzuli" and the system has found distances, but when I write "android", the system has found zero distance for "android".


Here, I actually wanted to show you many things. One of'em was how to get a piece of array with foreach. Other one was the point of this article, Levenshtein function. I hope that was enough and helpful for you!


See you!

Calculating roots of a parabola with Fuzuli Programming Language

Fuzuli has its core libraries inhereted from C++ standard libraries. That is why adapting to Fuzuli does not require climbing a sharp learning curve. Only the requirement is to have a habitat of parenthesis syntax.

In this article, we write a small script for calculating roots of a parabola. This script includes two Fuzuli packages, io and math. This packages are required for readline, exit and sqrt functions. The remaining part of this script uses the internal functions of Fuzuli.

A parabola is a function in form of ax^2 + bx + c where a!=0. Delta, which is calculated as b^2 - 4ac is an indicator of number of real roots. If delta is less than zero, the parabola has no real roots. If delta is zero, all of the roots shares the same value. If delta is greater than zero, there are two distinct roots. This is not our subject now and it is well described at the Wikipedia.

Before coding, you can manually install the Fuzuli for Linux or Windows systems. Please visit the Fuzuli Official Web Page and Google Code page for installing instructions.
Our Fuzuli script is shown below:


(require "/usr/lib/fuzuli/nfl/io.nfl")
(require "/usr/lib/fuzuli/nfl/math.nfl")

(print "Please enter a b and c for parabola ax^2 + bx + c\n")
(print "Enter a:")
(let a (readline))

(print "Enter b:")
(let b (readline))


(print "Enter c:")
(let c (readline))

(let delta (- (pow b 2) (* 4 (* a c))))
(print "Delta is " delta "\n")

(if (< delta 0.0)
 (block
  (print "No real roots exist\n")
  (exit 0)
 )
)

(if (= delta 0.0)
 (print "There are two equal roots\n")
)

(if (> delta 0.0)
 (print "There are two different real roots\n")
)

(let x1 (/ (+ (* -1 b) (sqrt delta)) (* 2 a)))
(let x2 (/ (- (* -1 b) (sqrt delta)) (* 2 a)))
(print "x1=" x1 " and x2=" x2 "\n")
I write the codes above in the file "delta.fzl". You can run it by typing

#fuzuli delta.fzl


and program asks for values of a, b and c. The output screen is similar to the output given below:


Have fun with Fuzuli!

Wednesday, June 13, 2012

Extracting links from web pages using Fuzuli

We have too much written about Fuzuli and its core components but we didn't publish any real world applications run on it.

Fuzuli, our new general purpose programming language and interpreter, is first introduced in Practical Code Solutions blog and has the official web page http://www.fuzuliproject.org.

Here we have an example of extracting links from an HTTP connection. Program asks for a domain name. The default one is amazon.com and processed by just pressing enter key. Then program sends an HTTP GET request to the server and reads the content. After collecting all of the content, program starts to parse HTML codes and shows the tags start with an A tag.  The Fuzuli code is shown below:


# Loading required packages
(require "/usr/lib/fuzuli/nfl/io.nfl")
(require "/usr/lib/fuzuli/nfl/string.nfl")
(require "/usr/lib/fuzuli/nfl/net.nfl")

# Getting a domain name from user.
(puts "Please give a domain (for default just type enter):")
(let word (readline))

# If user did not type anything
# set the default page to amazon.com
(if (< (strlen word) 3)
   (let word "amazon.com")
)
(print "Doing " word "\n")


# Open a socket connection to host
(print "Connecting " word "\n")
(let socket (fsockopen word 80))

# Sending HTTP Request
(print "Sending request\n")
(fsockwrite socket (strcat (list "GET /\n\n")))

# Reading html content
(print "Retrieving result\n")
(def htmllist LIST)
(while 1
   (let c (fsockread socket 1))
   (if (= (typeof c) NULL) (break))
   (append htmllist c)
)
# Closing socket
(fsockclose socket)

(print "Constucting string\n")

(let html (strcat htmllist))
(let len (strlen html))
(print len " bytes read.\n")

(def part STRING)
(def i INTEGER)

# Parsing loaded content
(for (let i 0) (< i len) (inc i)
   (let part (substr html i (+ i 7)))
   (if (= part "<a href")
      (block
         (print "link found: \n")
         (while (!= part "</a>")
            (let part (substr html i (+ i 4)))
            (print (substr html i (+ i 1)))
            (inc i)
         )
         (print part "\n")
      )
   )
) 


The example given above combines variable definitions and scopes, loops, sockets and basic io. Please get more detailed information about the keywords, commands and functions using Fuzuli's documentation site.

Sunday, June 10, 2012

Installing Fuzuli for Windows

Well, it was difficult to shut down our Linux installed machines and start up Windows after a long time interval. Unfortunately, there are many Windows users around the world that want to try out Fuzuli, our new interpreter which is first introduced in Practical Code Solutions blog.

We compiled Fuzuli using GNU C++ compiler and prepared some Linux packages which are ready to download at Google Code page. In order to compile it Windows, we had to use GNU for Windows, namely CYGWIN. Finally, we have a running copy at hand and it is ready to download in page Download Packages. Installing Fuzuli in Windows is such an easy task. Just follow the required steps and start running and testing Fuzuli.

  1. Go to the page http://code.google.com/p/fuzuli/downloads/list and download Fuzuli for Windows.
  2. The current zip file is fuzuli-win_0.1-4.zip but it depends on the current release. It will have a new name in the future but in the same pattern.
  3. Extract the zip file, for example in C:\, so your Fuzuli folder becomes c:\fuzuli-win_0.1-4.

 Okay, by now on, you will have installed Fuzuli! Let's test it using following steps:
  1. Click button. Select run and type "cmd". Press enter. This will open a terminal screen.



  2. Type "cd C:\fuzuli-win_0.1-4" and type enter. This will get you in the Fuzuli folder. 





  3. Type "fuzuli" and type enter. 
 You would see an output like this:


Fuzuli build Jun  9 2012 12:59:18
usage:
 fuzuli source
 fuzuli --repl



If you see the output shown above, you probably installed Fuzuli successfuly. Lets try a program. There is fzl file shipped with Fuzuli with name fibonacci.fzl. This file is a text file and can be edited a text editor like Notepad or Notepad++. You can run it by typing



fuzuli fibonacci.fzl


and if there is not any problem, the output should be like this:

PASSED!
PASSED!
PASSED!
PASSED!
PASSED!


The output shown above proofs that Fuzuli is ready. You can create your own fzl files and run them in a similar way.

Ok. Let write a world classic, Hello World!. Open your favorite text editor, it is Notepad++ if I work with Windows.

 
Now save it with name "hello.fzl" in some folder. Do not forget where you saved the file. I saved my hello.fzl in directory D:\myfuzuli so it is D:\myfuzuli\hello.fzl







 Okay, see you later in next article!

 

 

 



Sunday, June 3, 2012

Compiling and installing Fuzuli from source



Installing Fuzuli on Ubuntu 12.04 LTS article is explaining how to install Fuzuli from the Debian package. So you have to choose the correct .deb file because those packages contain compiled binary files  for differenct operation system architectures. In this article, we are talking about how to compile Fuzuli source code. Therefore you don't need to select any options for your system because correct binary files will be generated by make tools for your system.

Fuzuli source code is ready for download in the page http://code.google.com/p/fuzuli/source/browse/. You will learn how to download Fuzuli source code and how to compile it in this article steps.

1) INSTALLING MERCURIAL

We are using mercurial hg to update project source code and  you can also create a clone of Fuzuli on your file system. Our mercurial repository has the fresh source code of Fuzuli.

First of all we have to install mercurial like below:

user@user-VirtualBox:~$ 
user@user-VirtualBox:~$ sudo apt-get install mercurial
Reading package lists... Done
Building dependency tree       
Reading state information... Done
The following extra packages will be installed:
  mercurial-common
Suggested packages:
  qct wish vim emacs kdiff3 tkdiff meld xxdiff python-mysqldb python-pygments
The following NEW packages will be installed:
  mercurial mercurial-common
0 upgraded, 2 newly installed, 0 to remove and 154 not upgraded.
Need to get 1,982 kB of archives.
After this operation, 6,691 kB of additional disk space will be used.
Do you want to continue [Y/n]? 
Get:1 http://tr.archive.ubuntu.com/ubuntu/ precise/universe mercurial-common all 2.0.2-1ubuntu1 [1,945 kB]
Get:2 http://tr.archive.ubuntu.com/ubuntu/ precise/universe mercurial i386 2.0.2-1ubuntu1 [37.1 kB]
Fetched 1,982 kB in 0s (1,991 kB/s)
Selecting previously unselected package mercurial-common.
(Reading database ... 140906 files and directories currently installed.)
Unpacking mercurial-common (from .../mercurial-common_2.0.2-1ubuntu1_all.deb) ...
Selecting previously unselected package mercurial.
Unpacking mercurial (from .../mercurial_2.0.2-1ubuntu1_i386.deb) ...
Processing triggers for man-db ...
Setting up mercurial-common (2.0.2-1ubuntu1) ...
Setting up mercurial (2.0.2-1ubuntu1) ...

Creating config file /etc/mercurial/hgrc.d/hgext.rc with new version
user@user-VirtualBox:~$ 


 2-) GETTING SOURCE OF FUZULI WITH MERCURIAL

Also you can see a command line for cloning the source code on http://code.google.com/p/fuzuli/source/checkout page, command-line access part.

user@user-VirtualBox:~$ hg clone https://code.google.com/p/fuzuli/
destination directory: fuzuli
requesting all changes
adding changesets
adding manifests
adding file changes
added 21 changesets with 242 changes to 136 files
updating to branch default
116 files updated, 0 files merged, 0 files removed, 0 files unresolved

3-) INSTALLING GCC TO COMPILE SOFTWARES


We will need gcc compiler to generate binaries from source code, let's install it:

user@user-VirtualBox:~$ 
user@user-VirtualBox:/usr/share/fuzuli$ sudo apt-get install g++
Reading package lists... Done
Building dependency tree       
Reading state information... Done
Suggested packages:
  g++-multilib
The following NEW packages will be installed:
  g++
0 upgraded, 1 newly installed, 0 to remove and 154 not upgraded.
Need to get 1,444 B of archives.
After this operation, 34.8 kB of additional disk space will be used.
Get:1 http://tr.archive.ubuntu.com/ubuntu/ precise/main g++ i386 4:4.6.3-1ubuntu5 [1,444 B]
Fetched 1,444 B in 0s (13.3 kB/s)
Selecting previously unselected package g++.
(Reading database ... 142965 files and directories currently installed.)
Unpacking g++ (from .../g++_4%3a4.6.3-1ubuntu5_i386.deb) ...
Processing triggers for man-db ...
Setting up g++ (4:4.6.3-1ubuntu5) ...
update-alternatives: using /usr/bin/g++ to provide /usr/bin/c++ (c++) in auto mode.
user@user-VirtualBox:/usr/share/fuzuli$ 

 4-) INSTALLING DEPENDENCIES TO COMPILE FUZULI


4a-) MySQL database client library,

libmysqlclient-dev is mandatory but libmysqlclient18 is not. 


user@user-VirtualBox:/usr/share/fuzuli$ sudo apt-get install libmysqlclient18 libmysqlclient-dev
Reading package lists... Done
Building dependency tree       
Reading state information... Done
The following extra packages will be installed:
  mysql-common zlib1g-dev
The following NEW packages will be installed:
  libmysqlclient-dev libmysqlclient18 mysql-common zlib1g-dev
0 upgraded, 4 newly installed, 0 to remove and 154 not upgraded.
Need to get 2,455 kB of archives.
After this operation, 8,944 kB of additional disk space will be used.
Do you want to continue [Y/n]? 
Get:1 http://tr.archive.ubuntu.com/ubuntu/ precise/main mysql-common all 5.5.22-0ubuntu1 [13.7 kB]
Get:2 http://tr.archive.ubuntu.com/ubuntu/ precise/main libmysqlclient18 i386 5.5.22-0ubuntu1 [921 kB]
Get:3 http://tr.archive.ubuntu.com/ubuntu/ precise/main zlib1g-dev i386 1:1.2.3.4.dfsg-3ubuntu4 [162 kB]
Get:4 http://tr.archive.ubuntu.com/ubuntu/ precise/main libmysqlclient-dev i386 5.5.22-0ubuntu1 [1,358 kB]
Fetched 2,455 kB in 6s (375 kB/s)                                                                     
Selecting previously unselected package mysql-common.
(Reading database ... 142970 files and directories currently installed.)
Unpacking mysql-common (from .../mysql-common_5.5.22-0ubuntu1_all.deb) ...
Selecting previously unselected package libmysqlclient18.
Unpacking libmysqlclient18 (from .../libmysqlclient18_5.5.22-0ubuntu1_i386.deb) ...
Selecting previously unselected package zlib1g-dev.
Unpacking zlib1g-dev (from .../zlib1g-dev_1%3a1.2.3.4.dfsg-3ubuntu4_i386.deb) ...
Selecting previously unselected package libmysqlclient-dev.
Unpacking libmysqlclient-dev (from .../libmysqlclient-dev_5.5.22-0ubuntu1_i386.deb) ...
Processing triggers for man-db ...
Setting up mysql-common (5.5.22-0ubuntu1) ...
Setting up libmysqlclient18 (5.5.22-0ubuntu1) ...
Setting up zlib1g-dev (1:1.2.3.4.dfsg-3ubuntu4) ...
Setting up libmysqlclient-dev (5.5.22-0ubuntu1) ...
Processing triggers for libc-bin ...
ldconfig deferred processing now taking place
user@user-VirtualBox:/usr/share/fuzuli$ 

 4b-) The Tk toolkit for TCL and X11 (default version) - runtime files


user@user-VirtualBox:/usr/share/fuzuli$ sudo apt-get install tk tk-dev
Reading package lists... Done
Building dependency tree       
Reading state information... Done
The following extra packages will be installed:
  libexpat1-dev libfontconfig1-dev libfreetype6-dev libpthread-stubs0 libpthread-stubs0-dev
  libx11-dev libx11-doc libxau-dev libxcb1-dev libxdmcp-dev libxext-dev libxft-dev libxrender-dev
  libxss-dev libxss1 tcl tcl-dev tcl8.5 tcl8.5-dev tk8.5 tk8.5-dev x11proto-core-dev
  x11proto-input-dev x11proto-kb-dev x11proto-render-dev x11proto-scrnsaver-dev x11proto-xext-dev
  xorg-sgml-doctools xtrans-dev
Suggested packages:
  libxcb-doc tcl-doc tclreadline tcl8.5-doc tk-doc tk8.5-doc
The following NEW packages will be installed:
  libexpat1-dev libfontconfig1-dev libfreetype6-dev libpthread-stubs0 libpthread-stubs0-dev
  libx11-dev libx11-doc libxau-dev libxcb1-dev libxdmcp-dev libxext-dev libxft-dev libxrender-dev
  libxss-dev libxss1 tcl tcl-dev tcl8.5 tcl8.5-dev tk tk-dev tk8.5 tk8.5-dev x11proto-core-dev
  x11proto-input-dev x11proto-kb-dev x11proto-render-dev x11proto-scrnsaver-dev x11proto-xext-dev
  xorg-sgml-doctools xtrans-dev
0 upgraded, 31 newly installed, 0 to remove and 154 not upgraded.
Need to get 10.2 MB of archives.
After this operation, 36.1 MB of additional disk space will be used.
Do you want to continue [Y/n]? 
Get:1 http://tr.archive.ubuntu.com/ubuntu/ precise/main libxss1 i386 1:1.2.1-2 [8,604 B]
Get:2 http://tr.archive.ubuntu.com/ubuntu/ precise/main libexpat1-dev i386 2.0.1-7.2ubuntu1 [207 kB]
Get:3 http://tr.archive.ubuntu.com/ubuntu/ precise/main libfreetype6-dev i386 2.4.8-1ubuntu2 [778 kB]
Get:4 http://tr.archive.ubuntu.com/ubuntu/ precise/main libfontconfig1-dev i386 2.8.0-3ubuntu9 [652 kB]
Get:5 http://tr.archive.ubuntu.com/ubuntu/ precise/main libpthread-stubs0 i386 0.3-3 [3,264 B]
Get:6 http://tr.archive.ubuntu.com/ubuntu/ precise/main libpthread-stubs0-dev i386 0.3-3 [2,860 B]
Get:7 http://tr.archive.ubuntu.com/ubuntu/ precise/main xorg-sgml-doctools all 1:1.10-1 [12.0 kB]
Get:8 http://tr.archive.ubuntu.com/ubuntu/ precise/main x11proto-core-dev all 7.0.22-1 [299 kB]
Get:9 http://tr.archive.ubuntu.com/ubuntu/ precise/main libxau-dev i386 1:1.0.6-4 [10.2 kB]
Get:10 http://tr.archive.ubuntu.com/ubuntu/ precise/main libxdmcp-dev i386 1:1.1.0-4 [26.5 kB]
Get:11 http://tr.archive.ubuntu.com/ubuntu/ precise/main x11proto-input-dev all 2.1.99.6-1 [133 kB]
Get:12 http://tr.archive.ubuntu.com/ubuntu/ precise/main x11proto-kb-dev all 1.0.5-2 [27.6 kB]
Get:13 http://tr.archive.ubuntu.com/ubuntu/ precise/main xtrans-dev all 1.2.6-2 [82.9 kB]
Get:14 http://tr.archive.ubuntu.com/ubuntu/ precise/main libxcb1-dev i386 1.8.1-1 [82.4 kB]
Get:15 http://tr.archive.ubuntu.com/ubuntu/ precise/main libx11-dev i386 2:1.4.99.1-0ubuntu2 [894 kB]
Get:16 http://tr.archive.ubuntu.com/ubuntu/ precise/main libx11-doc all 2:1.4.99.1-0ubuntu2 [2,413 kB]
Get:17 http://tr.archive.ubuntu.com/ubuntu/ precise/main x11proto-xext-dev all 7.2.0-3 [253 kB]
Get:18 http://tr.archive.ubuntu.com/ubuntu/ precise/main libxext-dev i386 2:1.3.0-3build1 [150 kB]
Get:19 http://tr.archive.ubuntu.com/ubuntu/ precise/main x11proto-render-dev all 2:0.11.1-2 [20.1 kB]
Get:20 http://tr.archive.ubuntu.com/ubuntu/ precise/main libxrender-dev i386 1:0.9.6-2build1 [26.6 kB]
Get:21 http://tr.archive.ubuntu.com/ubuntu/ precise/main libxft-dev i386 2.2.0-3ubuntu2 [51.7 kB]
Get:22 http://tr.archive.ubuntu.com/ubuntu/ precise/main x11proto-scrnsaver-dev all 1.2.1-2 [23.1 kB]
Get:23 http://tr.archive.ubuntu.com/ubuntu/ precise/main libxss-dev i386 1:1.2.1-2 [12.8 kB]
Get:24 http://tr.archive.ubuntu.com/ubuntu/ precise/main tcl8.5 i386 8.5.11-1ubuntu1 [1,097 kB]
Get:25 http://tr.archive.ubuntu.com/ubuntu/ precise/main tcl all 8.5.0-2 [4,690 B]                    
Get:26 http://tr.archive.ubuntu.com/ubuntu/ precise/main tcl8.5-dev i386 8.5.11-1ubuntu1 [970 kB]     
Get:27 http://tr.archive.ubuntu.com/ubuntu/ precise/main tcl-dev all 8.5.0-2 [7,002 B]                
Get:28 http://tr.archive.ubuntu.com/ubuntu/ precise/main tk8.5 i386 8.5.11-1 [996 kB]                 
Get:29 http://tr.archive.ubuntu.com/ubuntu/ precise/main tk all 8.5.0-2 [4,720 B]                     
Get:30 http://tr.archive.ubuntu.com/ubuntu/ precise/main tk8.5-dev i386 8.5.11-1 [919 kB]             
Get:31 http://tr.archive.ubuntu.com/ubuntu/ precise/main tk-dev all 8.5.0-2 [4,450 B]                 
Fetched 10.2 MB in 7s (1,431 kB/s)                                                                    
Extracting templates from packages: 100%
Selecting previously unselected package libxss1.
(Reading database ... 143079 files and directories currently installed.)
Unpacking libxss1 (from .../libxss1_1%3a1.2.1-2_i386.deb) ...
Selecting previously unselected package libexpat1-dev.
Unpacking libexpat1-dev (from .../libexpat1-dev_2.0.1-7.2ubuntu1_i386.deb) ...
Selecting previously unselected package libfreetype6-dev.
Unpacking libfreetype6-dev (from .../libfreetype6-dev_2.4.8-1ubuntu2_i386.deb) ...
Selecting previously unselected package libfontconfig1-dev.
Unpacking libfontconfig1-dev (from .../libfontconfig1-dev_2.8.0-3ubuntu9_i386.deb) ...
Selecting previously unselected package libpthread-stubs0.
Unpacking libpthread-stubs0 (from .../libpthread-stubs0_0.3-3_i386.deb) ...
Selecting previously unselected package libpthread-stubs0-dev.
Unpacking libpthread-stubs0-dev (from .../libpthread-stubs0-dev_0.3-3_i386.deb) ...
Selecting previously unselected package xorg-sgml-doctools.
Unpacking xorg-sgml-doctools (from .../xorg-sgml-doctools_1%3a1.10-1_all.deb) ...
Selecting previously unselected package x11proto-core-dev.
Unpacking x11proto-core-dev (from .../x11proto-core-dev_7.0.22-1_all.deb) ...
Selecting previously unselected package libxau-dev.
Unpacking libxau-dev (from .../libxau-dev_1%3a1.0.6-4_i386.deb) ...
Selecting previously unselected package libxdmcp-dev.
Unpacking libxdmcp-dev (from .../libxdmcp-dev_1%3a1.1.0-4_i386.deb) ...
Selecting previously unselected package x11proto-input-dev.
Unpacking x11proto-input-dev (from .../x11proto-input-dev_2.1.99.6-1_all.deb) ...
Selecting previously unselected package x11proto-kb-dev.
Unpacking x11proto-kb-dev (from .../x11proto-kb-dev_1.0.5-2_all.deb) ...
Selecting previously unselected package xtrans-dev.
Unpacking xtrans-dev (from .../xtrans-dev_1.2.6-2_all.deb) ...
Selecting previously unselected package libxcb1-dev.
Unpacking libxcb1-dev (from .../libxcb1-dev_1.8.1-1_i386.deb) ...
Selecting previously unselected package libx11-dev.
Unpacking libx11-dev (from .../libx11-dev_2%3a1.4.99.1-0ubuntu2_i386.deb) ...
Selecting previously unselected package libx11-doc.
Unpacking libx11-doc (from .../libx11-doc_2%3a1.4.99.1-0ubuntu2_all.deb) ...
Selecting previously unselected package x11proto-xext-dev.
Unpacking x11proto-xext-dev (from .../x11proto-xext-dev_7.2.0-3_all.deb) ...
Selecting previously unselected package libxext-dev.
Unpacking libxext-dev (from .../libxext-dev_2%3a1.3.0-3build1_i386.deb) ...
Selecting previously unselected package x11proto-render-dev.
Unpacking x11proto-render-dev (from .../x11proto-render-dev_2%3a0.11.1-2_all.deb) ...
Selecting previously unselected package libxrender-dev.
Unpacking libxrender-dev (from .../libxrender-dev_1%3a0.9.6-2build1_i386.deb) ...
Selecting previously unselected package libxft-dev.
Unpacking libxft-dev (from .../libxft-dev_2.2.0-3ubuntu2_i386.deb) ...
Selecting previously unselected package x11proto-scrnsaver-dev.
Unpacking x11proto-scrnsaver-dev (from .../x11proto-scrnsaver-dev_1.2.1-2_all.deb) ...
Selecting previously unselected package libxss-dev.
Unpacking libxss-dev (from .../libxss-dev_1%3a1.2.1-2_i386.deb) ...
Selecting previously unselected package tcl8.5.
Unpacking tcl8.5 (from .../tcl8.5_8.5.11-1ubuntu1_i386.deb) ...
Selecting previously unselected package tcl.
Unpacking tcl (from .../archives/tcl_8.5.0-2_all.deb) ...
Selecting previously unselected package tcl8.5-dev.
Unpacking tcl8.5-dev (from .../tcl8.5-dev_8.5.11-1ubuntu1_i386.deb) ...
Selecting previously unselected package tcl-dev.
Unpacking tcl-dev (from .../tcl-dev_8.5.0-2_all.deb) ...
Selecting previously unselected package tk8.5.
Unpacking tk8.5 (from .../tk8.5_8.5.11-1_i386.deb) ...
Selecting previously unselected package tk.
Unpacking tk (from .../archives/tk_8.5.0-2_all.deb) ...
Selecting previously unselected package tk8.5-dev.
Unpacking tk8.5-dev (from .../tk8.5-dev_8.5.11-1_i386.deb) ...
Selecting previously unselected package tk-dev.
Unpacking tk-dev (from .../tk-dev_8.5.0-2_all.deb) ...
Processing triggers for doc-base ...
Processing 3 added doc-base files...
Registering documents with scrollkeeper...
Processing triggers for man-db ...
Setting up libxss1 (1:1.2.1-2) ...
Setting up libexpat1-dev (2.0.1-7.2ubuntu1) ...
Setting up libfreetype6-dev (2.4.8-1ubuntu2) ...
Setting up libfontconfig1-dev (2.8.0-3ubuntu9) ...
Setting up libpthread-stubs0 (0.3-3) ...
Setting up libpthread-stubs0-dev (0.3-3) ...
Setting up xorg-sgml-doctools (1:1.10-1) ...
Setting up x11proto-core-dev (7.0.22-1) ...
Setting up libxau-dev (1:1.0.6-4) ...
Setting up libxdmcp-dev (1:1.1.0-4) ...
Setting up x11proto-input-dev (2.1.99.6-1) ...
Setting up x11proto-kb-dev (1.0.5-2) ...
Setting up xtrans-dev (1.2.6-2) ...
Setting up libxcb1-dev (1.8.1-1) ...
Setting up libx11-dev (2:1.4.99.1-0ubuntu2) ...
Setting up libx11-doc (2:1.4.99.1-0ubuntu2) ...
Setting up x11proto-xext-dev (7.2.0-3) ...
Setting up libxext-dev (2:1.3.0-3build1) ...
Setting up x11proto-render-dev (2:0.11.1-2) ...
Setting up libxrender-dev (1:0.9.6-2build1) ...
Setting up libxft-dev (2.2.0-3ubuntu2) ...
Setting up x11proto-scrnsaver-dev (1.2.1-2) ...
Setting up libxss-dev (1:1.2.1-2) ...
Setting up tcl8.5 (8.5.11-1ubuntu1) ...
update-alternatives: using /usr/bin/tclsh8.5 to provide /usr/bin/tclsh (tclsh) in auto mode.
Setting up tcl (8.5.0-2) ...
update-alternatives: using /usr/bin/tclsh-default to provide /usr/bin/tclsh (tclsh) in auto mode.
Setting up tcl8.5-dev (8.5.11-1ubuntu1) ...
Setting up tcl-dev (8.5.0-2) ...
Setting up tk8.5 (8.5.11-1) ...
update-alternatives: using /usr/bin/wish8.5 to provide /usr/bin/wish (wish) in auto mode.
Setting up tk (8.5.0-2) ...
update-alternatives: using /usr/bin/wish-default to provide /usr/bin/wish (wish) in auto mode.
Setting up tk8.5-dev (8.5.11-1) ...
Setting up tk-dev (8.5.0-2) ...
Processing triggers for libc-bin ...
ldconfig deferred processing now taking place
user@user-VirtualBox:/usr/share/fuzuli$ 

4c-) tcl, The Command Language (default version) - run-time files

It's already installed in step "4b".

user@user-VirtualBox:/usr/share/fuzuli$ sudo apt-get install tcl tcl-dev
Reading package lists... Done
Building dependency tree       
Reading state information... Done
tcl is already the newest version.
tcl set to manually installed.
tcl-dev is already the newest version.
tcl-dev set to manually installed.
0 upgraded, 0 newly installed, 0 to remove and 154 not upgraded.
user@user-VirtualBox:/usr/share/fuzuli$ 

4d-) libcgicc5,

libcgicc5 is not dependency for fuzuli any more. If you are compiling older version of fuzuli, you may need it.

user@user-VirtualBox:/usr/share/fuzuli$ sudo apt-get install libcgicc
libcgicc5      libcgicc5-dev  libcgicc-doc   
user@user-VirtualBox:/usr/share/fuzuli$ sudo apt-get install libcgicc5 libcgicc5-dev
Reading package lists... Done
Building dependency tree       
Reading state information... Done
Suggested packages:
  libcgicc-doc
The following NEW packages will be installed:
  libcgicc5 libcgicc5-dev
0 upgraded, 2 newly installed, 0 to remove and 153 not upgraded.
Need to get 160 kB of archives.
After this operation, 758 kB of additional disk space will be used.
Get:1 http://tr.archive.ubuntu.com/ubuntu/ precise/universe libcgicc5 i386 3.2.9-3 [59.5 kB]
Get:2 http://tr.archive.ubuntu.com/ubuntu/ precise/universe libcgicc5-dev i386 3.2.9-3 [100 kB]
Fetched 160 kB in 0s (885 kB/s)    
Selecting previously unselected package libcgicc5.
(Reading database ... 147007 files and directories currently installed.)
Unpacking libcgicc5 (from .../libcgicc5_3.2.9-3_i386.deb) ...
Selecting previously unselected package libcgicc5-dev.
Unpacking libcgicc5-dev (from .../libcgicc5-dev_3.2.9-3_i386.deb) ...
Processing triggers for man-db ...
Setting up libcgicc5 (3.2.9-3) ...
Setting up libcgicc5-dev (3.2.9-3) ...
Processing triggers for libc-bin ...
ldconfig deferred processing now taking place
user@user-VirtualBox:/usr/share/fuzuli$ 

4e-) libgd2-xpm, GD Graphics Library version 2

user@user-VirtualBox:/usr/share/fuzuli$ sudo apt-get install libgd2-xpm libgd2-xpm-dev
Reading package lists... Done
Building dependency tree       
Reading state information... Done
libgd2-xpm is already the newest version.
The following extra packages will be installed:
  libjpeg-dev libjpeg-turbo8-dev libjpeg8-dev libpng12-dev libxpm-dev
The following NEW packages will be installed:
  libgd2-xpm-dev libjpeg-dev libjpeg-turbo8-dev libjpeg8-dev libpng12-dev libxpm-dev
0 upgraded, 6 newly installed, 0 to remove and 154 not upgraded.
Need to get 928 kB of archives.
After this operation, 2,962 kB of additional disk space will be used.
Do you want to continue [Y/n]? 
Get:1 http://tr.archive.ubuntu.com/ubuntu/ precise/main libjpeg-turbo8-dev i386 1.1.90+svn733-0ubuntu4 [413 kB]
Get:2 http://tr.archive.ubuntu.com/ubuntu/ precise/main libjpeg8-dev i386 8c-2ubuntu7 [1,544 B]
Get:3 http://tr.archive.ubuntu.com/ubuntu/ precise/main libjpeg-dev all 8c-2ubuntu7 [1,536 B]
Get:4 http://tr.archive.ubuntu.com/ubuntu/ precise/main libpng12-dev i386 1.2.46-3ubuntu4 [207 kB]
Get:5 http://tr.archive.ubuntu.com/ubuntu/ precise/main libxpm-dev i386 1:3.5.9-4 [93.9 kB]
Get:6 http://tr.archive.ubuntu.com/ubuntu/ precise/main libgd2-xpm-dev i386 2.0.36~rc1~dfsg-6ubuntu2 [210 kB]
Fetched 928 kB in 0s (1,660 kB/s)   
Selecting previously unselected package libjpeg-turbo8-dev.
(Reading database ... 145510 files and directories currently installed.)
Unpacking libjpeg-turbo8-dev (from .../libjpeg-turbo8-dev_1.1.90+svn733-0ubuntu4_i386.deb) ...
Selecting previously unselected package libjpeg8-dev.
Unpacking libjpeg8-dev (from .../libjpeg8-dev_8c-2ubuntu7_i386.deb) ...
Selecting previously unselected package libjpeg-dev.
Unpacking libjpeg-dev (from .../libjpeg-dev_8c-2ubuntu7_all.deb) ...
Selecting previously unselected package libpng12-dev.
Unpacking libpng12-dev (from .../libpng12-dev_1.2.46-3ubuntu4_i386.deb) ...
Selecting previously unselected package libxpm-dev.
Unpacking libxpm-dev (from .../libxpm-dev_1%3a3.5.9-4_i386.deb) ...
Selecting previously unselected package libgd2-xpm-dev.
Unpacking libgd2-xpm-dev (from .../libgd2-xpm-dev_2.0.36~rc1~dfsg-6ubuntu2_i386.deb) ...
Processing triggers for man-db ...
Setting up libjpeg-turbo8-dev (1.1.90+svn733-0ubuntu4) ...
Setting up libjpeg8-dev (8c-2ubuntu7) ...
Setting up libjpeg-dev (8c-2ubuntu7) ...
Setting up libpng12-dev (1.2.46-3ubuntu4) ...
Setting up libxpm-dev (1:3.5.9-4) ...
Setting up libgd2-xpm-dev (2.0.36~rc1~dfsg-6ubuntu2) ...
user@user-VirtualBox:/usr/share/fuzuli$ 

4f-) libreadline6, GNU readline and history libraries, run-time libraries

user@user-VirtualBox:/usr/share/fuzuli$ sudo apt-get install libreadline6 libreadline6-dev 
Reading package lists... Done
Building dependency tree       
Reading state information... Done
libreadline6 is already the newest version.
The following NEW packages will be installed:
  libreadline6-dev libtinfo-dev
0 upgraded, 2 newly installed, 0 to remove and 151 not upgraded.
Need to get 343 kB of archives.
After this operation, 901 kB of additional disk space will be used.
Get:1 http://tr.archive.ubuntu.com/ubuntu/ precise/main libtinfo-dev i386 5.9-4 [93.5 kB]
Get:2 http://tr.archive.ubuntu.com/ubuntu/ precise/main libreadline6-dev i386 6.2-8 [249 kB]
Fetched 343 kB in 0s (656 kB/s)       
Selecting previously unselected package libtinfo-dev.
(Reading database ... 148620 files and directories currently installed.)
Unpacking libtinfo-dev (from .../libtinfo-dev_5.9-4_i386.deb) ...
Selecting previously unselected package libreadline6-dev.
Unpacking libreadline6-dev (from .../libreadline6-dev_6.2-8_i386.deb) ...
Processing triggers for install-info ...
Setting up libtinfo-dev (5.9-4) ...
Setting up libreadline6-dev (6.2-8) ...
user@user-VirtualBox:/usr/share/fuzuli$ 


4g-) libssl1.0.0

user@user-VirtualBox:/usr/share/fuzuli$ sudo apt-get install libssl-dev 
Reading package lists... Done
Building dependency tree       
Reading state information... Done
The following extra packages will be installed:
  libssl-doc libssl1.0.0
The following NEW packages will be installed:
  libssl-dev libssl-doc
The following packages will be upgraded:
  libssl1.0.0
1 upgraded, 2 newly installed, 0 to remove and 153 not upgraded.
Need to get 3,449 kB of archives.
After this operation, 6,355 kB of additional disk space will be used.
Do you want to continue [Y/n]? 
Get:1 http://tr.archive.ubuntu.com/ubuntu/ precise-updates/main libssl1.0.0 i386 1.0.1-4ubuntu5.2 [1,002 kB]
Get:2 http://tr.archive.ubuntu.com/ubuntu/ precise-updates/main libssl-dev i386 1.0.1-4ubuntu5.2 [1,414 kB]
Get:3 http://tr.archive.ubuntu.com/ubuntu/ precise-updates/main libssl-doc all 1.0.1-4ubuntu5.2 [1,033 kB]
Fetched 3,449 kB in 0s (4,125 kB/s)
Preconfiguring packages ...
(Reading database ... 145603 files and directories currently installed.)
Preparing to replace libssl1.0.0 1.0.1-4ubuntu3 (using .../libssl1.0.0_1.0.1-4ubuntu5.2_i386.deb) ...
Unpacking replacement libssl1.0.0 ...
Setting up libssl1.0.0 (1.0.1-4ubuntu5.2) ...
Processing triggers for libc-bin ...
ldconfig deferred processing now taking place
Selecting previously unselected package libssl-dev.
(Reading database ... 145603 files and directories currently installed.)
Unpacking libssl-dev (from .../libssl-dev_1.0.1-4ubuntu5.2_i386.deb) ...
Selecting previously unselected package libssl-doc.
Unpacking libssl-doc (from .../libssl-doc_1.0.1-4ubuntu5.2_all.deb) ...
Processing triggers for man-db ...
Setting up libssl-dev (1.0.1-4ubuntu5.2) ...
Setting up libssl-doc (1.0.1-4ubuntu5.2) ...
user@user-VirtualBox:/usr/share/fuzuli$ 

4h-) Happycoders libsocket;


There is an article on stdioe blog. You can follow those instructions: http://stdioe.blogspot.com/2012/06/compiling-happycoders-libsocket-in.html

Note: After the installing process of Happycoders libsocket, you have to care "make install" command's output notes, (like following text)

----------------------------------------------------------------------
Libraries have been installed in:
   /usr/local/lib/happycoders/

If you ever happen to want to link against installed libraries
in a given directory, LIBDIR, you must either use libtool, and
specify the full pathname of the library, or use the `-LLIBDIR'
flag during linking and do at least one of the following:
   - add LIBDIR to the `LD_LIBRARY_PATH' environment variable
     during execution
   - add LIBDIR to the `LD_RUN_PATH' environment variable
     during linking
   - use the `-Wl,--rpath -Wl,LIBDIR' linker flag
   - have your system administrator add LIBDIR to `/etc/ld.so.conf'

See any operating system documentation about shared libraries for
more information, such as the ld(1) and ld.so(8) manual pages.
----------------------------------------------------------------------

You can execute "sudo ldconfig -n /usr/lib/happycoders" command and  edit "/etc/ld.so.conf.d/libc.conf" file like following text:

# libc default configuration
/usr/local/lib
/usr/local/lib/happycoders

Right now we can start to compiling Fuzuli source,

First of all, if you get any errors while compiling you can detect the reason of the error and you can execute "sudo ./release-clean-all.sh" command to go back to first step of fuzuli compiling. For example if an error accours as follow,

user@user-VirtualBox:/usr/share/fuzuli$ ./release-build-all.sh 
Building file: ../src/AritmeticExpression.cpp
Invoking: GCC C++ Compiler
g++ -O3 -Wall -c -fmessage-length=0 -fPIC -MMD -MP -MF"src/AritmeticExpression.d" -MT"src/AritmeticExpression.d" -o "src/AritmeticExpression.o" "../src/AritmeticExpression.cpp"
In file included from ../src/AritmeticExpression.cpp:19:0:
../src/../include/FuzuliTypes.h:31:25: fatal error: cgicc/Cgicc.h: No such file or directory
compilation terminated.
make: *** [src/AritmeticExpression.o] Error 1
Building file: ../src/IO.cpp
Invoking: Cross G++ Compiler
g++ -I/usr/include/tcl -I../../Interpreter/include/ -O3 -Wall -c -fmessage-length=0 -fPIC -MMD -MP -MF"src/IO.d" -MT"src/IO.d" -o "src/IO.o" "../src/IO.cpp"
In file included from ../src/IO.cpp:19:0:
../../Interpreter/include/FuzuliTypes.h:31:25: fatal error: cgicc/Cgicc.h: No such file or directory
compilation terminated.
make: *** [src/IO.o] Error 1
Building file: ../src/main.cpp
Invoking: Cross G++ Compiler
g++ -I../../Interpreter/include -O3 -Wall -c -fmessage-length=0 -MMD -MP -MF"src/main.d" -MT"src/main.d" -o "src/main.o" "../src/main.cpp"
../src/main.cpp:23:31: fatal error: readline/readline.h: No such file or directory
compilation terminated.
make: *** [src/main.o] Error 1
--------------------------------------------
|      testing all FUZULI script files.     |
--------------------------------------------

./tester.sh: line 35: fuzuli: command not found
argc_argv.fzl:
./tester.sh: line 35: fuzuli: command not found
arithmetic.fzl:
./tester.sh: line 35: fuzuli: command not found
block.fzl:
./tester.sh: line 35: fuzuli: command not found
Break.fzl:
./tester.sh: line 35: fuzuli: command not found
clientsocket.fzl:
./tester.sh: line 35: fuzuli: command not found
clone.fzl:
./tester.sh: line 35: fuzuli: command not found
dotimes.fzl:
./tester.sh: line 35: fuzuli: command not found
eval.fzl:
./tester.sh: line 35: fuzuli: command not found
explode.fzl:
./tester.sh: line 35: fuzuli: command not found
fibonacci.fzl:
./tester.sh: line 35: fuzuli: command not found
for.fzl:
./tester.sh: line 35: fuzuli: command not found
funcoverload.fzl:
./tester.sh: line 35: fuzuli: command not found
function.fzl:
./tester.sh: line 35: fuzuli: command not found
hex.fzl:
./tester.sh: line 35: fuzuli: command not found
inc.fzl:
./tester.sh: line 35: fuzuli: command not found
letTest1.fzl:
./tester.sh: line 35: fuzuli: command not found
list.fzl:
./tester.sh: line 35: fuzuli: command not found
math.fzl:
./tester.sh: line 35: fuzuli: command not found
maxmin.fzl:
./tester.sh: line 35: fuzuli: command not found
ols.fzl:
./tester.sh: line 35: fuzuli: command not found
sort.fzl:
./tester.sh: line 35: fuzuli: command not found
strings.fzl:
./tester.sh: line 35: fuzuli: command not found
switchcase.fzl:
./tester.sh: line 35: fuzuli: command not found
types.fzl:
./tester.sh: line 35: fuzuli: command not found
while.fzl:

--------------------------------------------
|             Report of test               |
--------------------------------------------
|  25 files has been tested.
|  0 statements has been passed.
|  0 statements has been failed.
--------------------------------------------

you can execute "sudo ./release-clean-all.sh" command and install libcgicc5-dev with "sudo apt-get install libcgicc5 libcgicc5-dev" command and continue the compiling fuzuli

user@user-VirtualBox:/usr/share/fuzuli$ sudo ./release-clean-all.sh 
rm -rf  ./src/AritmeticExpression.o ./src/AstBuilder.o ./src/BlockExpression.o ./src/CppEmitter.o ./src/DataTypeExpression.o ./src/DynLoadExpression.o ./src/Environment.o ./src/EvalExpression.o ./src/Expression.o ./src/FunctionExpression.o ./src/IOExpression.o ./src/IfExpression.o ./src/LetExpression.o ./src/ListExpression.o ./src/LoopsExpression.o ./src/SourceCode.o ./src/Token.o ./src/WebExpression.o  ./src/AritmeticExpression.d ./src/AstBuilder.d ./src/BlockExpression.d ./src/CppEmitter.d ./src/DataTypeExpression.d ./src/DynLoadExpression.d ./src/Environment.d ./src/EvalExpression.d ./src/Expression.d ./src/FunctionExpression.d ./src/IOExpression.d ./src/IfExpression.d ./src/LetExpression.d ./src/ListExpression.d ./src/LoopsExpression.d ./src/SourceCode.d ./src/Token.d ./src/WebExpression.d  libfuzuli.so
 
rm -rf  ./src/IO.o ./src/Math.o ./src/MySql.o ./src/TclTk.o ./src/gd.o ./src/net.o ./src/strings.o ./src/utils.o  ./src/IO.d ./src/Math.d ./src/MySql.d ./src/TclTk.d ./src/gd.d ./src/net.d ./src/strings.d ./src/utils.d  libFuzuliCore.so
 
rm -rf  ./src/main.o  ./src/main.d  fuzuli

Let's continue the compiling Fuzuli,
After  compiling, the build script will try the some testing. But all of them will be failed because, fuzuli binary file will be located in  the /usr/lib/fuzuli directory. We should create a link under the /usr/bin directory.

user@user-VirtualBox:/usr/share/fuzuli$ sudo ln -s /usr/lib/fuzuli/fuzuli /usr/bin/fuzuli

We are get ready to build Fuzuli project now,

user@user-VirtualBox:/usr/share/fuzuli$ sudo ./release-build-all.sh 
Building file: ../src/AritmeticExpression.cpp
Invoking: GCC C++ Compiler
g++ -O3 -Wall -c -fmessage-length=0 -fPIC -MMD -MP -MF"src/AritmeticExpression.d" -MT"src/AritmeticExpression.d" -o "src/AritmeticExpression.o" "../src/AritmeticExpression.cpp"
Finished building: ../src/AritmeticExpression.cpp
 
Building file: ../src/AstBuilder.cpp
Invoking: GCC C++ Compiler
g++ -O3 -Wall -c -fmessage-length=0 -fPIC -MMD -MP -MF"src/AstBuilder.d" -MT"src/AstBuilder.d" -o "src/AstBuilder.o" "../src/AstBuilder.cpp"
Finished building: ../src/AstBuilder.cpp
 
Building file: ../src/BlockExpression.cpp
Invoking: GCC C++ Compiler
g++ -O3 -Wall -c -fmessage-length=0 -fPIC -MMD -MP -MF"src/BlockExpression.d" -MT"src/BlockExpression.d" -o "src/BlockExpression.o" "../src/BlockExpression.cpp"
Finished building: ../src/BlockExpression.cpp
 
Building file: ../src/CppEmitter.cpp
Invoking: GCC C++ Compiler
g++ -O3 -Wall -c -fmessage-length=0 -fPIC -MMD -MP -MF"src/CppEmitter.d" -MT"src/CppEmitter.d" -o "src/CppEmitter.o" "../src/CppEmitter.cpp"
Finished building: ../src/CppEmitter.cpp
 
Building file: ../src/DataTypeExpression.cpp
Invoking: GCC C++ Compiler
g++ -O3 -Wall -c -fmessage-length=0 -fPIC -MMD -MP -MF"src/DataTypeExpression.d" -MT"src/DataTypeExpression.d" -o "src/DataTypeExpression.o" "../src/DataTypeExpression.cpp"
Finished building: ../src/DataTypeExpression.cpp
 
Building file: ../src/DynLoadExpression.cpp
Invoking: GCC C++ Compiler
g++ -O3 -Wall -c -fmessage-length=0 -fPIC -MMD -MP -MF"src/DynLoadExpression.d" -MT"src/DynLoadExpression.d" -o "src/DynLoadExpression.o" "../src/DynLoadExpression.cpp"
Finished building: ../src/DynLoadExpression.cpp
 
Building file: ../src/Environment.cpp
Invoking: GCC C++ Compiler
g++ -O3 -Wall -c -fmessage-length=0 -fPIC -MMD -MP -MF"src/Environment.d" -MT"src/Environment.d" -o "src/Environment.o" "../src/Environment.cpp"
Finished building: ../src/Environment.cpp
 
Building file: ../src/EvalExpression.cpp
Invoking: GCC C++ Compiler
g++ -O3 -Wall -c -fmessage-length=0 -fPIC -MMD -MP -MF"src/EvalExpression.d" -MT"src/EvalExpression.d" -o "src/EvalExpression.o" "../src/EvalExpression.cpp"
Finished building: ../src/EvalExpression.cpp
 
Building file: ../src/Expression.cpp
Invoking: GCC C++ Compiler
g++ -O3 -Wall -c -fmessage-length=0 -fPIC -MMD -MP -MF"src/Expression.d" -MT"src/Expression.d" -o "src/Expression.o" "../src/Expression.cpp"
Finished building: ../src/Expression.cpp
 
Building file: ../src/FunctionExpression.cpp
Invoking: GCC C++ Compiler
g++ -O3 -Wall -c -fmessage-length=0 -fPIC -MMD -MP -MF"src/FunctionExpression.d" -MT"src/FunctionExpression.d" -o "src/FunctionExpression.o" "../src/FunctionExpression.cpp"
Finished building: ../src/FunctionExpression.cpp
 
Building file: ../src/IOExpression.cpp
Invoking: GCC C++ Compiler
g++ -O3 -Wall -c -fmessage-length=0 -fPIC -MMD -MP -MF"src/IOExpression.d" -MT"src/IOExpression.d" -o "src/IOExpression.o" "../src/IOExpression.cpp"
Finished building: ../src/IOExpression.cpp
 
Building file: ../src/IfExpression.cpp
Invoking: GCC C++ Compiler
g++ -O3 -Wall -c -fmessage-length=0 -fPIC -MMD -MP -MF"src/IfExpression.d" -MT"src/IfExpression.d" -o "src/IfExpression.o" "../src/IfExpression.cpp"
Finished building: ../src/IfExpression.cpp
 
Building file: ../src/LetExpression.cpp
Invoking: GCC C++ Compiler
g++ -O3 -Wall -c -fmessage-length=0 -fPIC -MMD -MP -MF"src/LetExpression.d" -MT"src/LetExpression.d" -o "src/LetExpression.o" "../src/LetExpression.cpp"
Finished building: ../src/LetExpression.cpp
 
Building file: ../src/ListExpression.cpp
Invoking: GCC C++ Compiler
g++ -O3 -Wall -c -fmessage-length=0 -fPIC -MMD -MP -MF"src/ListExpression.d" -MT"src/ListExpression.d" -o "src/ListExpression.o" "../src/ListExpression.cpp"
Finished building: ../src/ListExpression.cpp
 
Building file: ../src/LoopsExpression.cpp
Invoking: GCC C++ Compiler
g++ -O3 -Wall -c -fmessage-length=0 -fPIC -MMD -MP -MF"src/LoopsExpression.d" -MT"src/LoopsExpression.d" -o "src/LoopsExpression.o" "../src/LoopsExpression.cpp"
Finished building: ../src/LoopsExpression.cpp
 
Building file: ../src/SourceCode.cpp
Invoking: GCC C++ Compiler
g++ -O3 -Wall -c -fmessage-length=0 -fPIC -MMD -MP -MF"src/SourceCode.d" -MT"src/SourceCode.d" -o "src/SourceCode.o" "../src/SourceCode.cpp"
Finished building: ../src/SourceCode.cpp
 
Building file: ../src/Token.cpp
Invoking: GCC C++ Compiler
g++ -O3 -Wall -c -fmessage-length=0 -fPIC -MMD -MP -MF"src/Token.d" -MT"src/Token.d" -o "src/Token.o" "../src/Token.cpp"
Finished building: ../src/Token.cpp
 
Building file: ../src/WebExpression.cpp
Invoking: GCC C++ Compiler
g++ -O3 -Wall -c -fmessage-length=0 -fPIC -MMD -MP -MF"src/WebExpression.d" -MT"src/WebExpression.d" -o "src/WebExpression.o" "../src/WebExpression.cpp"
Finished building: ../src/WebExpression.cpp
 
Building target: libfuzuli.so
Invoking: GCC C++ Linker
g++ -shared -o "libfuzuli.so"  ./src/AritmeticExpression.o ./src/AstBuilder.o ./src/BlockExpression.o ./src/CppEmitter.o ./src/DataTypeExpression.o ./src/DynLoadExpression.o ./src/Environment.o ./src/EvalExpression.o ./src/Expression.o ./src/FunctionExpression.o ./src/IOExpression.o ./src/IfExpression.o ./src/LetExpression.o ./src/ListExpression.o ./src/LoopsExpression.o ./src/SourceCode.o ./src/Token.o ./src/WebExpression.o   -ldl
Finished building target: libfuzuli.so
 
make --no-print-directory post-build
./eclipse-post-inst.sh
 
Building file: ../src/IO.cpp
Invoking: Cross G++ Compiler
g++ -I/usr/include/tcl -I../../Interpreter/include/ -O3 -Wall -c -fmessage-length=0 -fPIC -MMD -MP -MF"src/IO.d" -MT"src/IO.d" -o "src/IO.o" "../src/IO.cpp"
../src/IO.cpp: In function ‘void __readToken(FILE*, fuzuli::Token*)’:
../src/IO.cpp:167:9: warning: variable ‘dummy_return’ set but not used [-Wunused-but-set-variable]
../src/IO.cpp: In function ‘void __readLine(FILE*, fuzuli::Token*)’:
../src/IO.cpp:193:9: warning: variable ‘dummy_return’ set but not used [-Wunused-but-set-variable]
Finished building: ../src/IO.cpp
 
Building file: ../src/Math.cpp
Invoking: Cross G++ Compiler
g++ -I/usr/include/tcl -I../../Interpreter/include/ -O3 -Wall -c -fmessage-length=0 -fPIC -MMD -MP -MF"src/Math.d" -MT"src/Math.d" -o "src/Math.o" "../src/Math.cpp"
Finished building: ../src/Math.cpp
 
Building file: ../src/MySql.cpp
Invoking: Cross G++ Compiler
g++ -I/usr/include/tcl -I../../Interpreter/include/ -O3 -Wall -c -fmessage-length=0 -fPIC -MMD -MP -MF"src/MySql.d" -MT"src/MySql.d" -o "src/MySql.o" "../src/MySql.cpp"
Finished building: ../src/MySql.cpp
 
Building file: ../src/TclTk.cpp
Invoking: Cross G++ Compiler
g++ -I/usr/include/tcl -I../../Interpreter/include/ -O3 -Wall -c -fmessage-length=0 -fPIC -MMD -MP -MF"src/TclTk.d" -MT"src/TclTk.d" -o "src/TclTk.o" "../src/TclTk.cpp"
Finished building: ../src/TclTk.cpp
 
Building file: ../src/gd.cpp
Invoking: Cross G++ Compiler
g++ -I/usr/include/tcl -I../../Interpreter/include/ -O3 -Wall -c -fmessage-length=0 -fPIC -MMD -MP -MF"src/gd.d" -MT"src/gd.d" -o "src/gd.o" "../src/gd.cpp"
Finished building: ../src/gd.cpp
 
Building file: ../src/net.cpp
Invoking: Cross G++ Compiler
g++ -I/usr/include/tcl -I../../Interpreter/include/ -O3 -Wall -c -fmessage-length=0 -fPIC -MMD -MP -MF"src/net.d" -MT"src/net.d" -o "src/net.o" "../src/net.cpp"
Finished building: ../src/net.cpp
 
Building file: ../src/strings.cpp
Invoking: Cross G++ Compiler
g++ -I/usr/include/tcl -I../../Interpreter/include/ -O3 -Wall -c -fmessage-length=0 -fPIC -MMD -MP -MF"src/strings.d" -MT"src/strings.d" -o "src/strings.o" "../src/strings.cpp"
Finished building: ../src/strings.cpp
 
Building file: ../src/utils.cpp
Invoking: Cross G++ Compiler
g++ -I/usr/include/tcl -I../../Interpreter/include/ -O3 -Wall -c -fmessage-length=0 -fPIC -MMD -MP -MF"src/utils.d" -MT"src/utils.d" -o "src/utils.o" "../src/utils.cpp"
Finished building: ../src/utils.cpp
 
Building target: libFuzuliCore.so
Invoking: Cross G++ Linker
g++ -L/usr/lib/happycoders -L/usr/lib/i386-linux-gnu -shared -o "libFuzuliCore.so"  ./src/IO.o ./src/Math.o ./src/MySql.o ./src/TclTk.o ./src/gd.o ./src/net.o ./src/strings.o ./src/utils.o   -lm -lssl -lcrypto -lsocket -ltk -lgd -lmysqlclient -ltcl
Finished building target: libFuzuliCore.so
 
make --no-print-directory post-build
./eclipse-post-inst.sh
 
Building file: ../src/main.cpp
Invoking: Cross G++ Compiler
g++ -I../../Interpreter/include -O3 -Wall -c -fmessage-length=0 -MMD -MP -MF"src/main.d" -MT"src/main.d" -o "src/main.o" "../src/main.cpp"
Finished building: ../src/main.cpp
 
Building target: fuzuli
Invoking: Cross G++ Linker
g++  -o "fuzuli"  ./src/main.o  /usr/lib/fuzuli/libfuzuli.so -lreadline
Finished building target: fuzuli
 
make --no-print-directory post-build
./eclipse-post-inst.sh
--------------------------------------------
|      testing all FUZULI script files.     |
--------------------------------------------

argc_argv.fzl:
1: PASS
arithmetic.fzl:
1: PASS
2: PASS
3: PASS
4: PASS
5: PASS
6: PASS
7: PASS
8: PASS
9: PASS
10: PASS
11: PASS
block.fzl:
1: PASS
Break.fzl:
1: PASS
clientsocket.fzl:
1: PASS
clone.fzl:
1: PASS
2: PASS
dotimes.fzl:
1: PASS
eval.fzl:
1: PASS
explode.fzl:
1: PASS
fibonacci.fzl:
1: PASS
2: PASS
3: PASS
4: PASS
5: PASS
for.fzl:
1: PASS
2: PASS
3: PASS
4: PASS
funcoverload.fzl:
1: PASS
2: PASS
3: PASS
function.fzl:
1: PASS
2: PASS
hex.fzl:
1: PASS
inc.fzl:
1: PASS
2: PASS
letTest1.fzl:
1: PASS
list.fzl:
1: PASS
2: PASS
3: PASS
4: PASS
math.fzl:
1: PASS
2: PASS
3: PASS
4: PASS
5: PASS
6: PASS
7: PASS
8: PASS
9: PASS
maxmin.fzl:
1: PASS
ols.fzl:
1: PASS
2: PASS
sort.fzl:
1: PASS
2: PASS
strings.fzl:
1: PASS
2: PASS
3: PASS
4: PASS
5: PASS
6: PASS
7: PASS
8: PASS
9: PASS
10: PASS
11: PASS
12: PASS
13: PASS
14: PASS
15: PASS
16: PASS
17: PASS
switchcase.fzl:
1: PASS
types.fzl:
1: PASS
2: PASS
while.fzl:
1: PASS

--------------------------------------------
|             Report of test               |
--------------------------------------------
|  25 files has been tested.
|  77 statements has been passed.
|  0 statements has been failed.
--------------------------------------------
 
--------------------------------------------
|      testing all FUZULI script files.     |
--------------------------------------------

argc_argv.fzl:
1: PASS
arithmetic.fzl:
1: PASS
2: PASS
3: PASS
4: PASS
5: PASS
6: PASS
7: PASS
8: PASS
9: PASS
10: PASS
11: PASS
block.fzl:
1: PASS
Break.fzl:
1: PASS
clientsocket.fzl:
1: PASS
clone.fzl:
1: PASS
2: PASS
dotimes.fzl:
1: PASS
eval.fzl:
1: PASS
explode.fzl:
1: PASS
fibonacci.fzl:
1: PASS
2: PASS
3: PASS
4: PASS
5: PASS
for.fzl:
1: PASS
2: PASS
3: PASS
4: PASS
funcoverload.fzl:
1: PASS
2: PASS
3: PASS
function.fzl:
1: PASS
2: PASS
hex.fzl:
1: PASS
inc.fzl:
1: PASS
2: PASS
letTest1.fzl:
1: PASS
list.fzl:
1: PASS
2: PASS
3: PASS
4: PASS
math.fzl:
1: PASS
2: PASS
3: PASS
4: PASS
5: PASS
6: PASS
7: PASS
8: PASS
9: PASS
maxmin.fzl:
1: PASS
ols.fzl:
1: PASS
2: PASS
sort.fzl:
1: PASS
2: PASS
strings.fzl:
1: PASS
2: PASS
3: PASS
4: PASS
5: PASS
6: PASS
7: PASS
8: PASS
9: PASS
10: PASS
11: PASS
12: PASS
13: PASS
14: PASS
15: PASS
16: PASS
17: PASS
switchcase.fzl:
1: PASS
types.fzl:
1: PASS
2: PASS
while.fzl:
1: PASS

--------------------------------------------
|             Report of test               |
--------------------------------------------
|  25 files has been tested.
|  77 statements has been passed.
|  0 statements has been failed.
--------------------------------------------
user@user-VirtualBox:/usr/share/fuzuli$ 

Well done. All tests are Ok. You can use Fuzuli now. If you want to update your Fuzuli later, you can clean and build again.