Ezhil code-freeze | rc1 v0.99


At Team Ezhil we proposed to declare code-freeze for Ezhil for reaching v1.0 stable builds on major platforms. In this regard today the release candidate 1 for v0.99 is ready. During this process we addressed some long standing interpreter (core) bugs and updated examples for aesthetic comments.

  1. Windows 64b package at  ezhillang.org, source forge.
  2. Linux (Ubuntu 64b amd/x86) package at ezhillang, source forge.
  3. People interested to build for other platforms (Mac OSX, Fedora and Win32) are requested to get in touch with ezhil team.

At this time I welcome:

  • contributors and reviewers to use and provide early feedback before final version is released.
  • Errors by omissions and additions or typos are requested to be brought to our attention.

For questions and comments: ezhillang@gmail.com.

San José, California.

வலது சொடுக்கு “இயக்கு” – எழில் திருத்தியில்

கைவசம் வேகமாக எழில் திருத்தியில் இயக்கு என்று செய்வதற்கு ஒரு பட்டன் இல்லை இதுவரை. இதனால் நீங்கள் குறுகிய நிரலை எழுதினாலும், அல்லது “தமிழில் நிரல் எழுது” புத்தகத்தில் உள்ள உதாரணங்களை “உதவி” மெனுவில் இருந்து இயக்கிவருவதும் கொஞ்சம் கடினமாக அமையும்.

வருகை வேகமாக இயக்க,   வலது சொடுக்கு right-click மெனுவில் இயக்கு என்று பட்டனை இன்று சேர்த்தேன். இது கொஞ்சம் விறுவிறுப்பான வேலை. இது எப்படி செயல்படுகிறது என்று பாருங்களேன்,


  1. முதலில் எழில் திருத்தியான “எழுதி” திறக்கவும்.
  2. இரண்டாவதாக “இயக்கு” என்ற கருவி பட்டையில்  (toolbar) உள்ள பட்டனை சொடுக்குங்கள். இது பச்சை எழுத்துக்களில் உள்ள நிரல் வெளியீடை தரும். (வலது புரம் பார்க்கவும்.)aug13_s1
  3. மூன்றாவதாக, உதாரணத்துக்கு உங்களுக்கு “30-ன் அடுக்கு பெருக்கு  எவ்வளவு?” என்ற கேள்வியை விடைகாண இங்கு எழுதலாம். இடது பக்கம் எழுதியபின் இதனை “வலது சொடுக்கி இயக்கு” என்று சொல்லவும் – கீழ் கண்டது போல.aug13_s2
  4. அடுத்து “விரைவாக இயக்கு” என்பது விடையை உங்களுக்கு அளிக்கும்.aug13_s3

இது இன்றைய அக்கம்.

எழில் உதவி ஆவணம் காட்டி மேம்பாடு

எல்லா மென்பொருளிலுமே ஒரு “Help” (உதவி) மெனு கொடுப்பது IT துறையில் உள்ள ஒரு எழுதாத சட்டம் என்றே சொல்லலாம்.

இப்போது இந்த எழில் செயலி எழுதியில் ஒரு உதவி ஆவணம் கட்டியை முன்னாடியே இணைத்திட்டோம். ஆனால் அது மனசுக்கு பிடித்தமாதிரி இல்லை.

இப்போது இந்த window (சாளரத்தில்) எனக்கு மூன்று விஷயங்கள் பிடிக்கவில்லை; இதற்க்கு படம் 1 உதவியாக இருக்கும்:

  1. புத்தகத்து தலைப்பு “0” என்று சொல்லக்கூடாது; இது நீக்கப்படவேண்டும்.
  2. அடுத்து அத்தியாயங்களின் தலைப்பு இடது பக்கம் ஆரம்பித்து  இருக்கவேண்டும்.


    படம் 1:   எ ழுதி உதவி ஆவணம் காட்டி

  3. அடுத்து அத்தியாயத்தின் தலைப்பை பெரிய எழுத்துக்களில் இருக்க செய்யவேண்டும்.

இவற்றை github வழு பட்டியலில் issue என்று பதிவு செய்தேன்



இதனை GTK3+ documentation கைவசம் வைத்து நிரலை மாத்தி எழுதலாம். இதற்க்கு முன்னும் பின்னும் ஒரு மணி நேரம் மேல் ஆனது.

ஒவ்வொரு முறையும் ezhil-lang/editor/DocView.py என்ற நிரலை மாற்றிய பின் python ezhuthi.py என்று இயக்கி “உதவி > புத்தகம்” என்ற மெனுவில் இருந்து சுடக்கி இதன் தோற்றத்தை சரிபார்க்கவேண்டும்.

எல்லாம் சரியானதும் இது போன்று காட்சி அளித்தது:


படம் 2: திருத்தம் செய்த நிரலில் “உதவி > புத்தகம்” தோற்றம்

இதனை github-இல் உடனே சேர்த்துவிட்டேன். இப்போது எழில் ஆவணம் காட்டி மேம்பாடு செய்தாச்சு ! மீன்டும் பார்க்கலாம்.


எழில் கற்க வீடியோ பயிற்சி – learn programming videos

தமிழில் எப்படி கணினி நிரலாக்கல் கற்றுக்கொள்வது ? முதலில் எழுதி செயலியை உங்கள் Windows OS அல்லது Linux OS இல் download செய்து, “தமிழில் நிரல் எழுது” என்ற புத்தகம் படி ஒவ்வொரு நிரல் எழுதி, இயக்கி பயிலுங்கள்.

இந்த வீடியோ பட்டியல் உங்களுக்கு கைகொடுக்கும்.

Project ‘padai’ – scripts to launch Tamil server instances

Over the years of my open-source development I have moved towards using more cloud computers for various reasons of convenience. However getting a cloud computer from one of the major providers like AWS, Azure etc. requires a lot of setup time to bring it to a usable state for Tamil software development.

Primarily for Tamil software development on Windows 10 (or later) is slightly more easier, compared to Linux/Unix machines, because basic Unicode font and rendering support works out of the box. However in Linux cloud-machines X-windows, Window manager, and desktop support is not common – let alone Tamil support!

So everytime to setup a cloud instance I had to spend a few hours tracking down the packages, installing the dependencies, running host of shell commands to ensure its all lined up to see Tamil text rendered correctly on the remote-screen. This would typically take away time I spend building binary packages for project Ezhil.

Knowing vaguely you can make this system administration and server conf tasks simplified using shell-scripts or tools like Fabric, I researched them earlier; then I asked in our Tamil software community from my Twitter account what could be the solution:


I got recommendations to use Ansible and build a Docker image for the server of interest from Shrinivasan (aside: Congratulations to Shrinivasan named as 2016 Tamil Computing award winner for his work on Tamil and Indian-language projects at WikiMedia foundation and Wikipedia!)

Now I figured my familiarity in bringing up machines using Python or shell-scripting could be useful in getting me off the ground right away – while I could find ways to get expertise on Docker or Ansible to help me out. So I put together all the scripts I used for bringing up Fedora/24 and Ubuntu/16 machines for Ezhil development.

The result is ‘Padai’ project –  currently two nice scripts to get you from basic IaaS server to a working Tamil script rendering computer for Ezhil development in 10-minutes for both Fedora and Ubuntu. Check it out here.

Looking forward for your support and sending us your pull-requests.


அல்கோரிதம் – அடுக்குகளை தலைகீழ் படுத்துவது எப்படி ?

Move 1,2,3 disks from peg #1 to peg #2, with peg #3 as intermediate. Move disk 4 from peg #1 to peg #4. Then move all disks from peg #2 to peg #3 using peg #1 as intermediate.

இந்த வாரம் அமெரிக்காவில் “long weekend” அதாவது மூன்று-நாள் வார விடுமுறை – காரணம் மே மதம் நான்காம் திங்கள் “Memorial day” என்கிற “அமெரிக்க போர்வீரர் நினைவு தினம்”. இதனை ஒட்டி சராசரி குடும்பங்கள் நாடெங்கும் உல்லாச பயணம், சுற்றுலா என்று செல்வது அமெரிக்க பண்பாடு. இந்த ஆண்டு எங்கள் வீட்டில் விருந்தினரை வரவேற்கிறோம் – பயணம் என்பது இந்த ஆண்டு எங்கள் விருந்திரனுக்கு மட்டுமே! சரி அப்போது ஒரு புதிய தரவமைப்பு பற்றி ஒரு blog post போடுவோம் என்று எழுத ஆரம்பித்தது இங்கே.

அடுக்கு (Stack) என்பது ஒரு மிக அடிப்படை கணினி நிரலாக்க கோட்பாடு. ஒரு அடுக்கு தரவமைப்பில் செய்யக்கூடிய நடவடிக்கைகள் ஆனது : மேல் நுழை (push), மேல் நீக்கு (pop) என்பது.

ஒரு அடுக்கை இப்படி (கீழ் கண்டபடி) உருவாக்கலாம்:

எ = அடுக்கு()
மேல்_நுழை( எ, "அ" )
மேல்_நுழை( எ, "ஆ" )

இது கணினியில் ஒரு அடுக்கு போலவே உருவெடுக்கும்,

   --> [ ஆ ]
       [ அ ]
அடுக்கு "எ" என்பதில் இரண்டு உருப்படிகள் உள்ளது; 
இதில் "மேல்" உருப்படி "ஆ" என்ற மதிப்பாகும்.

மேலும் இந்த அடுக்கில் மற்ற உயிரெழுத்துக்களை முழுதாக சேர்க்கலாம்:

மேல்_நுழை( எ, "இ" )
மேல்_நுழை( எ, "ஈ" )
மேல்_நுழை( எ, "உ")
மேல்_நுழை( எ, "ஊ")
மேல்_நுழை( எ, "எ")
மேல்_நுழை( எ, "ஏ")
மேல்_நுழை( எ, "ஐ")
மேல்_நுழை( எ, "ஒ")
மேல்_நுழை( எ, "ஓ")
மேல்_நுழை( எ, "ஔ")

கணினியில் இதன் தோற்றம் இப்படி இருக்கும்,

   --> [ ஔ ]
       [ ஓ ]
       [ ஒ ]
       [ ஐ ]
       [ ஏ ]
       [ எ ]
       [ ஊ ]
       [ உ ]
       [ ஈ ]
       [ இ ]
       [ ஆ ]
       [ அ ]
அடுக்கு "எ" என்பதில் பன்னிரண்டு உருப்படிகள் உள்ளது; 
இதில் "மேல்" உருப்படி "ஔ" என்ற மதிப்பாகும்.

நம்ம இங்கே ஆயுத எழுத்து “ஃ” என்பதை சேர்க்கவில்லை; உங்களுக்கு வேண்டுமானால் நீங்கள் சேர்த்து கொள்ளலாம்.

அடுக்கின் வரிசை மாற்றுவது எப்படி ?

இப்போது அடுக்கு “எ” இதன் வரிசை மாற்றுவது எப்படி ? ஒரு குவிப்பில் இருந்து “மேல் எடு” என்று செய்தால் என்ன விளைவு என்று முதல் படியாக பார்க்கலாம் – இதன் விளைவு மேல் உள்ள உருப்படியை அழிக்கும்.

மேல்_எடு( எ )
# தற்போது குவிப்பு 'எ' வில் 11 உருப்படிகள் மட்டும் இருக்கும்.
# ஏற்கெனவே உள்ள மேல் உருப்படி 'ஓ' அழிக்கப்பட்டது.
# புதிய மேல் உருப்படி 'ஓ' என்று ஆனது.

இப்போது இந்த அடுக்கின் நிலை,

 -->   [ ஓ ]
       [ ஒ ]
       [ ஐ ]
       [ ஏ ]
       [ எ ]
       [ ஊ ]
       [ உ ]
       [ ஈ ]
       [ இ ]
       [ ஆ ]
       [ அ ]
அடுக்கு : எ 

இப்போது அழித்த மேல் உருப்படியை புதிய அடுக்கு ‘ஏ’ வில் மேல் நுழைத்தால் – அதையே ‘எ’ என்ற அடுக்கில் உருப்படிகள் உள்ளவரை அதில் மேல் எடுத்து, ‘ஏ’ வில் மேல் நுழைத்துக்கொண்டே இருந்தால் என்ன ஆகும் ?
இதனை நிரல் படுத்தி பார்க்கலாம்.

ஏ  = அடுக்கு()
மேல்_நுழை( ஏ, "ஔ")
@( நீளம்( எ ) > 0 ) வரை 
    மதிப்பு = மேல்_எடு( எ )
    மேல்_நுழை( ஏ, மதிப்பு )    

தற்போது அடுக்கு ‘எ’-வின் நிலை காலியானது:

 -->[ ]
அடுக்கு : எ 

ஆனால் அடுக்கு ‘ஏ’-வின் நிலையோ – வரிசை மாற்றப்பட்டது!

-->[ அ ]
   [ ஆ ]
   [ இ ]
   [ ஈ ]
   [ உ ]
   [ ஊ ]
   [ எ ]
   [ ஏ ]
   [ ஐ ]
   [ ஒ ]
   [ ஓ ]
   [ ஔ ]
அடுக்கு : ஏ 

இந்த நிரல் துண்டு Python மொழியில் இப்படி எழுதலாம்,

# (C) 2017 Ezhil Language Foundation
# This code is shared under public domain
# Ref: https://ezhillang.wordpress.com
import tamil
import pprint

class Stack:
    def __init__(self):
        self.store = list()

    def top(self):
        return self.store(-1)

    def __len__(self):
        return self.store.__len__()

    def push(self,val):

    def pop(self):
        val = self.store.pop()
        return val

    def display(self):
a = Stack()
for letter in tamil.utf8.uyir_letters:

rev_a = Stack()

while len(a) > 0:
    val = a.pop()

print("Original stack => ")
print("Reversed stack => ")

இதன் வெளியீடோ கீழே உள்ளபடி:

[(11, 'ஆ'),
 (10, 'இ'),
 (9, 'ஈ'),
 (8, 'உ'),
 (7, 'ஊ'),
 (6, 'எ'),
 (5, 'ஏ'),
 (4, 'ஐ'),
 (3, 'ஒ'),
 (2, 'ஓ'),
 (1, 'ஔ')]
Original stack => 
Reversed stack => 
[(11, 'ஔ'),
 (10, 'ஓ'),
 (9, 'ஒ'),
 (8, 'ஐ'),
 (7, 'ஏ'),
 (6, 'எ'),
 (5, 'ஊ'),
 (4, 'உ'),
 (3, 'ஈ'),
 (2, 'இ'),
 (1, 'ஆ')]