ஆவணம்

இ-தமிழ் பயனர் கையேடு

இ-தமிழ் நிரல்களை எழுத, இயக்க, வெளியிட முழுமையான வழிகாட்டி — முதல் வரியிலிருந்து தரவுத்தளம் சார்ந்த HTTP சேவை வரை.

இ-தமிழ் நிரல்களை எழுதவும் இயக்கவும் தேவையான அனைத்தையும் இந்தக் கையேடு உள்ளடக்குகிறது. முனையத்தைப் (terminal) பயன்படுத்தத் தெரிந்தால் போதும்; வேறு எதுவும் தேவையில்லை.

சுருக்கமான அறிமுகம் மட்டும் போதுமெனில் மொழி அறிமுகம் பாருங்கள். முழுத் திறவுச்சொல் பட்டியல் திறவுச்சொல் பட்டியலில் உள்ளது.

மரபுகள். குறியீடு தமிழ் எழுத்தில் காட்டப்படுகிறது. ஒவ்வொரு திறவுச்சொல்லுக்கும் எழுத்துப்பெயர்ப்பு வடிவமும், பெரும்பாலும் ஆங்கில வடிவமும் உண்டு; அனைத்தும் பரிமாறத்தக்கவை — மூன்று எழுத்து வடிவங்கள் பார்க்கவும். ஒரு வசதிக்கு உருவாக்கக் கொடி (build flag) அல்லது சூழல் மாறி தேவைப்பட்டால், அது குறிப்பிடப்படும்.

பொருளடக்கம்

தொடங்குதல்நிறுவல் · நிரலை இயக்குதல் · மூன்று எழுத்து வடிவங்கள்

மொழிமாறிகளும் வகைகளும் · எண்களும் பணமும் · சரங்கள் · உள்ளீடும் வெளியீடும் · செயற்குறிகள் · நிபந்தனைகளும் சுழற்சிகளும் · செயல்கள் · அணிகளும் பதிவேடுகளும் · சுழற்சி · முடிவுகள் · தொகுதிகள் · வகைச் சரிபார்ப்பு · பெயரிடல் விதிகள் · பிழைகள் · கோப்புகள்

நூலகங்கள்நிலையான நூலகம் · கணக்கியலும் GST-யும்

சேவைகள் கட்டுதல்தரவுத்தளங்கள் · HTTP சேவையகம் · JSON · அங்கீகாரம் · கையொப்பமிடல் · பைட்டுகளும் குறியாக்கமும் · வெளிச்செல்லும் HTTP · திட்டமிட்ட பணிகள்

நடைமுறைதிருத்தி · சரிபார்ப்பும் சோதனையும் · சூழல் மாறிகள் · அடுத்த படிகள்


1. நிறுவல்

விரைவான வழிக்கு Rust-ம் தேவையில்லை, C கருவித்தொகுப்பும் தேவையில்லை.

Windows

Expand-Archive etamil-windows-x64.zip -DestinationPath .
.\etamil-windows-x64\install.ps1

Linux

tar -xzf etamil-linux-x64.tar.gz
./etamil-linux-x64/install.sh

macOS — Apple Silicon-க்கு arm64, Intel-க்கு x64; uname -m எது என்பதைச் சொல்லும்.

tar -xzf etamil-macos-arm64.tar.gz
./etamil-macos-arm64/install.sh
xattr -dr com.apple.quarantine ~/.local/lib/etamil

கடைசி வரி விருப்பத்தேர்வு அல்ல, தேவையானது: இக்கோப்புகள் notarize செய்யப்படவில்லை, எனவே உலாவி வழியாகப் பதிவிறக்கியதை macOS தனிமைப்படுத்துகிறது; Gatekeeper அதை இயக்க மறுக்கும். ஒருமுறை இக்குறியை நீக்கினால் போதும்.

பிறகு புதிய முனையம் ஒன்றைத் திறக்கவும் — நிறுவி PATH-ஐ மாற்றுகிறது, ஏற்கெனவே இயங்கும் ஷெல் அதைக் காணாது — பின்னர் சரிபார்க்கவும்:

etamil --version

நீக்குவதும் எளிது: Windows நிறுவி அனைத்தையும் %LOCALAPPDATA%\Programs\eTamil-இல், Linux நிறுவி ~/.local-இல் வைக்கிறது. இரண்டுக்கும் நிர்வாகி உரிமை தேவையில்லை.

மூலக்குறியீட்டிலிருந்து உருவாக்க — PostgreSQL, MySQL இயக்கிகள், LLVM பின்தளம், அல்லது தொகுப்பியிலேயே பணியாற்ற வேண்டுமெனில் — நிறுவல் பக்கம் பார்க்கவும்.

2. நிரலை இயக்குதல்

echo 'அச்சு "வணக்கம் உலகம்!";' > hello.etamil
etamil --vm hello.etamil

Windows-இல் கோப்பை UTF-8 ஆக எழுதுங்கள்:

'அச்சு "வணக்கம் உலகம்!";' | Out-File hello.etamil -Encoding UTF8
etamil --vm hello.etamil
கொடி செயல்
--vm பைட்கோட் VM-இல் இயக்கு. இதுவே இயல்பு, இதுவே வேண்டியது
--check லெக்ஸ், பாகுபடுத்தல், வகைச் சரிபார்ப்பு மட்டும். எல்லாப் பிழைகளையும் தெரிவிக்கும், நிரலை ஒருபோதும் இயக்காது
--server பணியாளர் குழுவுடன் HTTP சேவையகத்தைத் தொடங்கு
--async ஒருங்கிணைந்த சேவையகம்: async ஏற்பு, blocking pool-இல் கையாளிகள். Ctrl-C நிறுத்தும்
--llvm LLVM பின்தளம். --features llvm தேவை; Linux, macOS மட்டும்
--port <PORT> சேவையகத் துறை, இயல்பு 8080
--host <HOST> சேவையக ஹோஸ்ட், இயல்பு 127.0.0.1

கோப்பு நீட்சிகள் மரபு சார்ந்தவை, கட்டாயம் அல்ல: களஞ்சியத்தில் .etamil மற்றும் .qmz இரண்டும் பயன்படுகின்றன.

மூன்று எழுத்து வடிவங்கள்

ஒவ்வொரு திறவுச்சொல்லும் தமிழ் எழுத்தில், சாதாரண விசைப்பலகையில் தட்டச்சு செய்யக்கூடிய எழுத்துப்பெயர்ப்பில், மேலும் இருக்கும் இடங்களில் ஆங்கிலப் பெயரில் ஏற்கப்படுகிறது. அனைத்தும் ஒரே டோக்கனை உருவாக்குகின்றன.

எண் வருவாய் = 100000;     // தமிழ் எழுத்து
eN varuvAy = 100000;       // எழுத்துப்பெயர்ப்பு (ezuqqu)
int income = 100000;       // ஆங்கிலப் பெயர்

எழுத்துப்பெயர்ப்பு ezuqqu என்ற தனி முறை; வேண்டுமென்றே ISO 15919 அல்ல. ஒரு தமிழ் எழுத்துக்கு ஒரு ASCII எழுத்து; துணைக்குறிகள் இல்லை, இரட்டை எழுத்துகள் இல்லை. ஆங்கிலம் ஒரே n ஆகச் சுருக்கும் மூன்று தமிழ் மூக்கொலிகளையும் இது தனித்தனியே வைக்கிறது — என்பது N, என்பது n, என்பது Z. முழு எழுத்து அட்டவணை மொழிப் பக்கத்தில் உள்ளது.

ஒரு நிரலுக்கு ஒரு வடிவத்தைத் தேர்ந்தெடுங்கள். கலப்பது சட்டப்படி சரியே, ஆனால் ஒரே மாதிரித் தெரியும், உண்மையில் வேறுபட்ட மாறிகளை உருவாக்கும் — பெயரிடல் விதிகள் பார்க்கவும்.


3. மாறிகளும் வகைகளும்

எண் age = 25;          // எண்
எண் price = 99.99;     // நிலைப்புள்ளி தசமம்
எண் rate = 15%;        // சதவீத மதிப்பு — சரியாக 0.15
சொல் name = "ரவி";     // சரம்

வகையை அறிவிப்பது விருப்பத்தேர்வு; அறிவிக்காமல் ஒதுக்குவதும் இயங்கும். அறிவித்தால், தொகுப்பி அதைக் கடைப்பிடிக்கச் செய்யும் — பிற்பாடு வரும் ஒதுக்கீடுகளிலும்.

வகைகள்: எண், சொல், அணி, வரிசை, மேலும் ஈர்ம மதிப்புகள் மெய், பொய்.

4. எண்களும் பணமும்

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

அச்சு 0.1 + 0.2;      // 0.3        — 0.30000000000000004 அல்ல
அச்சு 99.99 * 3;      // 299.97     — 299.96999999999997 அல்ல
அச்சு 18%;            // 0.18       சரியாக

சமநிலைச் சோதனையும் துல்லியமானது. ஒரு பைசாவின் பகுதியளவு வேறுபட்ட இரு தொகைகள் ஒருபோதும் சமமாகக் கருதப்படுவதில்லை — எதையேனும் சரிகட்டும் தருணத்தில் இது முக்கியம்.

வகுத்தல் ஒவ்வொரு படியிலும் முழுமைப்படுத்தாமல் முழுத் துல்லியத்தைத் தக்கவைக்கிறது; இந்திய வரிக் கணக்கீடு இறுதியில் ஒருமுறை மட்டுமே முழுமைப்படுத்துகிறது. தேவைப்படும்போது வெளிப்படையாக முழுமைப்படுத்துங்கள்:

அச்சு வட்டமிடு(மொத்தம் / 3, 2);   // 2 இடங்களுக்கு
அச்சு தரை(12.7);                  // 12
அச்சு மேல்(12.1);                 // 13

தற்போது எண் மட்டுமே எண் வகை — தனி முழு எண் இல்லை, நாணயத்தைச் சுமக்கும் பண வகையும் இல்லை; எனவே ரூபாயை எண்ணிக்கையுடன் கூட்டுவதை வகைச் சரிபார்ப்பு இன்னும் மறுக்க முடியாது.

5. சரங்கள்

& இணைக்கிறது. சரங்கள் எழுதப்பட்ட எழுத்துகளால் அளக்கப்படுகின்றன, குறியீட்டுப் புள்ளிகளால் அல்ல:

அச்சு நீளம்("வணக்கம்");     // 5, 7 அல்ல

ஒரு தமிழ் எழுத்து பெரும்பாலும் மெய்யெழுத்து + உயிர்க்குறி அல்லது புள்ளி. குறியீட்டுப் புள்ளிகளை எண்ணினால் தவறான விடை வரும்; ஒவ்வொரு சர உதவியும் அத்தவற்றைப் பெறும்.

விடுபடுக் குறியீடுகள்: \n \t \r \" \\. தெரியாத ஒன்று வந்தால், ஊகிக்காமல் இரு எழுத்துகளையும் அப்படியே வைத்துக்கொள்கிறது.

6. உள்ளீடும் வெளியீடும்

எண் வருவாய்;
அச்சு "வருமானத்தை உள்ளிடுக: ";
உள்ளிடு வருவாய்;
அச்சு "வருமானம்: " & வருவாய்;

உள்ளிடு எப்போதும் உரையையே திருப்புகிறது. எண்ணுடன் ஒப்பிடும்போதோ கணிதத்தில் பயன்படுத்தும்போதோ அது மாற்றப்படுகிறது; எனவே ஒரு தொகையைப் படித்து வரி அடுக்குடன் ஒப்பிடுவது வெளிப்படையான மாற்றம் இல்லாமலே இயங்கும்.

7. செயற்குறிகள்

வகை செயற்குறிகள்
கணிதம் + - * /, மேலும் ஒற்றை -
ஒப்பீடு == != < <= > >=
தருக்கம் மற்றும் / maRRum / _and, அல்லது / allaqu / _or, இல்லை / illY / _not
சரம் &

முன்னுரிமை, தளர்வானது முதலில்: orandnot → ஒப்பீடு → + -* /.

(வருவாய் > 800000 மற்றும் வயது < 60) எனில் {
    அச்சு "வரி விதிக்கத்தக்கது";
}

தருக்கச் செயற்குறியின் இரு பக்கங்களும் எப்போதும் மதிப்பிடப்படுகின்றன. சுருக்கு மதிப்பீடு (short-circuiting) இல்லை; எனவே இடது பக்கம் வலது பக்கத்தைக் காக்கும் என நம்ப வேண்டாம்.

8. நிபந்தனைகளும் சுழற்சிகளும்

(வருவாய் > 800000) எனில் {
    அச்சு "உயர்வு";
}
இன்றேல் {
    அச்சு "தாழ்வு";
}

எண் i = 0;
(i < 3) சுற்று {
    அச்சு i;
    i = i + 1;
}

நிபந்தனை முதலில் வந்து அடைப்புக்குள் இருக்கும்; எனில் அதைத் தொடர்கிறது.

9. செயல்கள்

செயல் அறிவிக்கிறது, திரும்பு திருப்புகிறது. அளபுருக்கள், உள்ளூர் நோக்கெல்லை, சுய அழைப்பு (recursion) அனைத்தும் இயங்கும். செயல்களுக்கு இன்னும் அறிவிக்கப்பட்ட கையொப்பங்கள் இல்லை; எனவே அளபுரு வகைகள் சரிபார்க்கப்படுவதில்லை.

செயல் வரிசை_மதிப்பு(உருப்படி) {
    திரும்பு உருப்படி.அளவு * உருப்படி.விலை;
}

முதல்-நிலைச் செயல்கள் இல்லை — ஒரு செயலை மதிப்பாகக் கடத்த முடியாது; அதனால்தான் நிலையான நூலகத்தில் map, filter இல்லை.

10. அணிகளும் பதிவேடுகளும்

அணிகள் […], சுழி முதல் குறியிடப்படுபவை. பதிவேடுகள் {…}, சாவி: மதிப்பு வடிவில்.

விலைகள் = [100, 250, 375];
அச்சு விலைகள்[0];                 // 100

உருப்படி = {விவரம்: "மடிக்கணினி", விலை: 54999};
அச்சு உருப்படி.விலை;
அச்சு உருப்படி["விலை"];           // அதே; சாவி இயக்க நேரத்தில் கணிக்கப்படுகிறது

இரண்டாவது வடிவம் முக்கியம்: சாவியைக் கணிக்க முடிவதால்தான், JSON பாகுபடுத்தி ஹோஸ்டில் அல்லாமல் இ-தமிழிலேயே எழுதப்பட்டுள்ளது.

11. சுழற்சி

ஒவ்வொரு … இல் அணிகள், பதிவேடுகள், சரங்கள் மீது நடக்கிறது.

ஒவ்வொரு உருப்படி இல் உருப்படிகள் {
    அச்சு உருப்படி.விவரம்;
}

12. முடிவுகள் — தோல்வியைக் கையாளுதல்

தோல்வி ஒரு மதிப்பு; விதிவிலக்கு (exception) அல்ல. தோல்வியடையக்கூடிய அழைப்பு சரி அல்லது தவறு ஐத் திருப்புகிறது; Rust-இன் பொருள்முறையைப் பின்பற்றுகிறது.

உள்ளமைச் செயல் பயன்
சரியா(r) முடிவு வெற்றியெனில் மெய்
தவறா(r) தோல்வியெனில் மெய்
மதிப்பு(r) மதிப்பை வெளியே எடு
இயல்பு(r, d) வெளியே எடு, தோல்வியெனில் d
? தோல்வியை அழைத்தவருக்குக் கடத்து
ப = ஜேசான்_படி(request_body);
(தவறா(ப)) எனில் {
    பதில் 400, "தவறான JSON";
}
தரவு = மதிப்பு(ப);

13. தொகுதிகள்

இறக்கு மற்றொரு கோப்பை இறக்குமதி செய்கிறது. பாதைகள் இறக்குமதி செய்யும் கோப்பின் அருகில் முதலில், பிறகு ETAMIL_PATH வழியாக, பிறகு தொகுப்பி இருமத்தின் அருகில் தீர்க்கப்படுகின்றன.

இறக்கு "nUlakam/paNam.qmz";
இறக்கு "../../nUlakam/kaNiqam.qmz";

எங்கிருந்தும் நிலையான நூலகத்தைப் பயன்படுத்த:

export ETAMIL_PATH=/path/to/etamil_compiler

14. வகைச் சரிபார்ப்பு

--check இயக்காமலேயே பாகுபடுத்தி வகை சரிபார்க்கிறது:

etamil --check my_program.qmz

அறிவிக்கப்பட்ட வகை இடத்துடன் கடைப்பிடிக்கப்படுகிறது:

✗ வரி 2, நெடுவரிசை 6: 'கொடியா' ஈர்ம (Irma, a boolean) என அறிவிக்கப்பட்டது,
  ஆனால் ஒரு அணி (an array) வழங்கப்பட்டது

சரிபார்ப்பு வேண்டுமென்றே குறுகியது. ஒரு எண் சொல் ஐ நிறைவு செய்கிறது; ஏனெனில் ஒவ்வொரு மதிப்பும் உரையாகவே காட்டப்படுகிறது, உள்ளிடு திருப்பும் உரை வழக்கமாக எண்களுடன் ஒப்பிடப்படுகிறது. அழைப்பு, குறியீடு, புலம் அணுகல் ஆகியவை எந்த உரிமைகோரலும் செய்வதில்லை; செயல்களுக்கு இன்னும் கையொப்பங்கள் இல்லை — அங்குள்ள மௌனம் ஒப்புதல் அல்ல, உரிமைகோரல் இல்லாமை.

15. பெயரிடல் விதிகள்

நீங்கள் தட்டச்சு செய்தபடியே ஒரு பெயர் சேமிக்கப்படுகிறது — அச்சொல் ஒரு திறவுச்சொல்லாக இருந்தாலும். வங்கி = 5 என்பது வங்கி எனும் மாறியை உருவாக்குகிறது; {வரி: 100} என்பது வரி எனும் புலத்தைத் தருகிறது.

விளைவு: {வரி: 1} மற்றும் {vari: 1} வெவ்வேறு புலங்கள்; வருவாய் மற்றும் varuvAy வெவ்வேறு மாறிகள். ஒரு நிரலுக்கு ஒரு வடிவம். புலப் பெயர் என்பது தரவு — நீங்கள் தட்டச்சு செய்தது — மொழி அமைப்பு அல்ல.

இரு இடங்களில் மட்டும் நியமன ஆங்கிலப் பெயர் தக்கவைக்கப்படுகிறது; ஏனெனில் அவை பெயரிடுவது உங்களுக்கல்ல, ஹோஸ்டுக்குச் சொந்தமானது: தளம்_இணை-இல் தரவுத்தள வகை, வழி-இல் HTTP முறை.

கடும் ஒதுக்கீட்டுச் சொற்கள் பெயர்களாகவே பயன்படுத்த முடியாது — வகைத் திறவுச்சொற்களும் SQL உட்பிரிவுச் சொற்களும்: எண், சொல், அணி, வரிசை, விதி, இடம், உள், வெளி, குழு, சேர்.

நிதித் திறவுச்சொற்கள் ஒதுக்கப்படவில்லை: தொகை ஒரு நல்ல மாறிப் பெயரே.

16. பிழைச் செய்திகளைப் படித்தல்

ஒவ்வொரு பாகுபடுத்தல் பிழையும் வரியையும் நெடுவரிசையையும் தமிழிலும் ஆங்கிலத்திலும் சுமக்கிறது:

✗ வரி 3, நெடுவரிசை 1: ';' எதிர்பார்க்கப்பட்டது, 'அச்சு' கிடைத்தது
  (line 3, column 1: expected ';', found 'அச்சு')

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

செயல்படுத்தப்படாத எதுவும் அமைதியாக ஏதோ ஒன்றைச் செய்யாமல், தெளிவான பிழைச் செய்தியுடன் நிற்கிறது — வரிக் கணக்கீட்டில் அமைதியான செயலின்மை, பிழையை விட மோசமானது.

17. கோப்புகளும் CSV-யும்

கோப்பு_திற "output.txt", "write";     // எழுதத் திறப்பது உள்ளடக்கத்தை நீக்கும்
கோப்பு_எழுது "output.txt", "வணக்கம்";  // அடுத்த எழுத்துகள் இணைக்கப்படும்
கோப்பு_மூடு "output.txt";

கோப்பு_படி "output.txt", data;
அச்சு data;

தலைப்பு வரியைத் தவிர்த்து CSV வரிசைகளை எண்ணுதல்:

தரவுரை_படி "students.csv", total;
அச்சு total;

18. நிலையான நூலகம்

nUlakam/ Rust-இல் அல்ல, இ-தமிழில் எழுதப்பட்டுள்ளது. நிலையான நூலகத்துக்கே ஓர் அமைப்பு மொழி தேவைப்பட்டால், அது இருப்பதற்கான காரணத்துக்கே இந்த DSL போதுமானதாக இருக்காது.

தொகுதி உள்ளடக்கம்
col.qmz சரங்கள் — துண்டு தேடு பிரி ஒன்றிணை ஒழுங்கு தொடங்குகிறதா முடிகிறதா
kaNiqam.qmz கணிதம் — முழுமதிப்பு சிறியது பெரியது கூட்டு சராசரி சதவீதம்
aNi.qmz அணிகள் — உள்ளதா இடம்_காண் தலைகீழ் வெட்டு புலம்_எடு காலியா
paNam.qmz பணம் — ரூபாய் காசு_வடிவம் காசாக லட்சம் கோடி
jEcAZ.qmz JSON — ஜேசான்_ஆக்கு ஜேசான்_படி
kuRiyAkkam.qmz குறியாக்கம் — அறுபத்துநான்கு_ஆக்கு அறுபத்துநான்கு_படி பதினாறு_ஆக்கு பதினாறு_படி
இறக்கு "nUlakam/paNam.qmz";

அச்சு ரூபாய்(12345678.5);      // ₹1,23,45,678.50 — லட்சம், கோடி

ஹோஸ்ட் வழங்குபவை, மொழியால் வெளிப்படுத்த முடியாதவை மட்டும்: நீளம் இணை வகை · சரி தவறு சரியா தவறா மதிப்பு இயல்பு · வட்டமிடு தரை மேல் · சொல்லாக்கு எண்ணாக்கு · மேல்_எழுத்து கீழ்_எழுத்து · இன்று நாள்_வேறுபாடு நாள்_கூட்டு · கடவுச்சொல்_மறை கடவுச்சொல்_சரியா சீட்டு_ஆக்கு சீட்டு_சரிபார் · கையொப்பம் கையொப்பம்_சரியா · வலை_பெறு வலை_பதி வலை_அனுப்பு · பைட்டுகள் பைட்டுச்_சரம்.

19. கணக்கியலும் GST-யும்

நிதிச் சொல்லகராதி மொழிக்குள்ளேயே உள்ளது — வரவு, பற்று, வரி, இருப்புநிலை, பேரேடு, மூலதனம் ஆகியவை திறவுச்சொற்கள். அவற்றுக்கு மேலுள்ள கட்டமைப்பு nUlakam/kaNakkiyal/-இல், அதுவும் இ-தமிழில்.

இறக்கு "nUlakam/kaNakkiyal/pErEtu.qmz";

பேரேடு = மதிப்பு(பதிவிடு(பேரேடு, பரிவர்த்தனை_ஆக்கு(
    "JV001", "2026-04-01", "தொடக்க மூலதனம்", [
        பற்று_வரிசை("1000", 500000),
        வரவு_வரிசை("3000", 500000)
    ])));

பதிவிடு சமநிலையற்ற பரிவர்த்தனையை மறுத்து தவறு ஐத் திருப்புகிறது; எனவே சமநிலையற்ற எதுவும் பேரேட்டை அடைவதில்லை. பேரேடு ஒரு மதிப்பு: பதிவிடுதல் பழையதைத் திருத்தாமல் புதிய பேரேட்டைத் திருப்புகிறது; எனவே ஒரு பதிவை பின்னர் மாற்ற முடியாது.

முழு எடுத்துக்காட்டுகள் நிதிப் பக்கத்தில்.


20. தரவுத்தளங்கள்

வினாக்கள் எப்போதும் அளபுருக்களுடன். SQL உரைக்குள் ஒரு மதிப்பை இணைக்கும் வழி வேண்டுமென்றே இல்லை; எனவே ஊடுருவல் (injection) வகைப் பிழையை எழுதவே முடியாது.

தளம்_இணை எசுகியூஎல்லைட், "kaNakku.db";
தளம்_வினா "SELECT peyar, qokY FROM pativukaL WHERE vakY = ?", ["வரவு"], வரவுகள்;

வரிசைகள் பதிவேடுகளின் அணியாகத் திரும்புகின்றன.

இயந்திரம் நிலை குறிப்பு
SQLite இயங்குகிறது உள்ளமைக்கப்பட்டது. தசமங்கள் உரையாகச் சேமிக்கப்படுகின்றன, துல்லியம் இழக்கப்படுவதில்லை
PostgreSQL இயங்குகிறது --features postgres. பணம் நேட்டிவ் NUMERIC-இல்; இடங்காட்டிகள் $1, $2
MySQL / MariaDB நேரடியாகச் சரிபார்க்கப்பட்டது --features mysql. இடங்காட்டிகள் ?
MongoDB, Redis செயல்படுத்தப்படவில்லை இரண்டும் SQL வடிவ trait-க்குப் பொருந்தாது; முதலில் வடிவமைப்பு தேவை

ஒவ்வொரு கோரிக்கைக்கும் மீண்டும் திறக்காமல், இணைப்புகள் செயல்முறை அளவிலான ஓய்வுத் தேக்ககத்திலிருந்து மீண்டும் பயன்படுத்தப்படுகின்றன; குத்தகைகள் தனிப்பட்டவை, எனவே ஒரு பரிவர்த்தனை தன் இணைப்பைத் தனக்கே வைத்திருக்கும். ETAMIL_DB_IDLE எத்தனை சூடாக இருக்கும் என வரம்பிடுகிறது.

21. HTTP சேவையகம்

etamil --server --port 8080 my_service.qmz
etamil --async  --port 8080 my_service.qmz

வழி ஒரு வழியை அறிவிக்கிறது, பதில் பதிலளிக்கிறது:

வழி பெறு, "/kaNakku/:id" {
    பதில் 200, "id=" & param_id;
}

வழி பதி, "/pativu" {
    பதில் 201, "உடல்: " & request_body;
}
மாறி உள்ளடக்கம்
request_method HTTP முறை
request_path கோரப்பட்ட பாதை
request_body மூல உடல்
query_params வினாச் சரம், பதிவேடாக
headers கோரிக்கைத் தலைப்புகள், பதிவேடாக
path_params பொருந்திய :name பகுதிகள்
param_<name> ஒவ்வொரு பாதை அளபுருவும் நேரடியாக

பதில் தலைப்புகள் சாதாரண பதிவேடு; விடுத்தால் சேவையகம் application/json எனப் பதிலளிக்கும்.

--async இணைப்புகள் ஏற்கப்படும் விதத்தை மட்டுமே மாற்றுகிறது. VM ஒத்திசைவாகவே இருக்கிறது; கையாளிகள் tokio-வின் blocking pool-இல் இயங்குகின்றன — அதுவே blocking தரவுத்தள இயக்கிகள் தொடர்ந்து வேலை செய்ய வைக்கிறது.

22. JSON

இறக்கு "nUlakam/jEcAZ.qmz";

ப = மதிப்பு(ஜேசான்_படி(request_body));
அச்சு ப["qokY"] + 1;                       // எண், உரை அல்ல
பதில் 200, ஜேசான்_ஆக்கு({நிலுவை: 1500});

புலங்கள் வரிசைப்படுத்தப்பட்ட நிலையில் தொடராக்கப்படுகின்றன; எனவே பதில் உடல் சோதனைகளில் உறுதிப்படுத்தத்தக்க அளவு நிலையானது. \uXXXX விடுபடுக் குறியீடுகள் மாற்றப்படுவதில்லை.

23. அங்கீகாரம்

bcrypt-ம் JWT-ம் ஹோஸ்டில் உள்ளன; மறையாக்கத்துக்கும் HMAC-க்கும் மொழியால் அணுக முடியாத பைட்டுகளும் சமவாய்ப்பும் தேவை.

மறை = கடவுச்சொல்_மறை(கடவுச்சொல்);
(கடவுச்சொல்_சரியா(கடவுச்சொல், மறை)) எனில் {
    சீட்டு = சீட்டு_ஆக்கு({பயனர்: "ravi", பங்கு: "admin"});
    பதில் 200, சீட்டு;
}

சேவையகத்தைத் தொடங்கும் முன் ETAMIL_JWT_SECRET ஐ அமைக்கவும்.

24. கையொப்பமிடலும் வெப்ஹூக்குகளும்

கையொப்பம் HMAC-SHA256 கையொப்பத்தை உருவாக்குகிறது; கையொப்பம்_சரியா சரிபார்க்கிறது. ஒப்பீடு நிலையான நேரத்தில் நடக்கிறது.

வழி பதி, "/webhook" {
    (கையொப்பம்_சரியா(request_body, headers["X-Signature"], ரகசியம்)) எனில் {
        பதில் 200, "ok";
    }
    பதில் 401, "தவறான கையொப்பம்";
}

25. பைட்டுகள், base64, hex

பைட்டுகள் உரையைப் பைட்டுகளாக்குகிறது; பைட்டுச்_சரம் மீண்டும் உரையாக்குகிறது. பைட் அணி என்பது எண்களின் சாதாரண அணி — வேண்டுமென்றே புதிய மதிப்பு வகை அல்ல.

இறக்கு "nUlakam/kuRiyAkkam.qmz";

க = அறுபத்துநான்கு_ஆக்கு(பைட்டுகள்("வணக்கம்"));
அச்சு பைட்டுச்_சரம்(அறுபத்துநான்கு_படி(க));

26. பிற சேவைகளை அழைத்தல்

வலை_பெறு, வலை_பதி, வலை_அனுப்பு வெளிச்செல்லும் கோரிக்கைகளை அனுப்புகின்றன; --features http-client பின்னால், இயல்பாகவே இயக்கத்தில். 2xx அல்லாத பதில் தோல்வி அல்ல, ஒரு முடிவு.

ப = வலை_பெறு("https://api.example.in/rates");
(சரியா(ப)) எனில் {
    அச்சு மதிப்பு(ப).உடல்;
}

27. திட்டமிட்ட பணிகள்

இடைவெளி 3600 {
    அச்சு "மணிநேர சரிகட்டல்";
}

அந்த எண் இயக்கங்களுக்கு இடையிலான இடைவெளி. ஒரு இயக்கம் இடைவெளியை மீறினால், அடுத்தது ஏற்கெனவே ஓடுவதன் மேல் தொடங்காமல் தாமதமாகத் தொடங்கும் — பேரேட்டுப் பதிவுகளை இடும் பணிக்கு, அது தாமதத்துக்கும் தவறுக்கும் இடையிலான வேறுபாடு.


28. திருத்தி ஆதரவு

VS Code நீட்சி தொகுப்பிக் களஞ்சியத்தில் eTamil_Code/-இல்: 201 திறவுச்சொற்களுக்கும் எல்லா வடிவங்களிலும் நிறமூட்டல், 23 உள்ளமைச் செயல்கள் மற்றும் 122 nUlakam செயல்களுக்கு நிரப்புதல், தட்டச்சு செய்யும்போதே --check பிழைகள்.

இலக்கணமும் நிரப்புதல் தரவும் lexer.rs-இலிருந்து உருவாக்கப்படுகின்றன; அவை விலகினால் CI தோல்வியடையும்.

29. சரிபார்ப்பும் சோதனையும்

etamil --check my_program.qmz

தொகுப்பிக் களஞ்சியத்தில்:

cargo test                        # 196 மொழி + 59 அலகு + 8 --check
./scripts/run_examples.sh

மொழிச் சோதனைகள் வெளியேறு நிலைக் குறியீடுகளை அல்ல, நிரல் முடிவுகளை உறுதிப்படுத்துகின்றன — அவை உள்ளடக்கும் ஒவ்வொரு பிழையும் தவறான விடையைத் தந்தபடியே 0 என வெளியேறியது.

30. சூழல் மாறிகள்

மாறி செயல்
ETAMIL_PATH இறக்குமதி செய்யும் கோப்பின் அடைவுக்குப் பிறகு இறக்கு தேடும் இடம்
ETAMIL_JWT_SECRET சீட்டு_ஆக்கு / சீட்டு_சரிபார் க்கான கையொப்ப ரகசியம்
ETAMIL_DB_IDLE ஓய்வுத் தேக்ககத்தில் எத்தனை தரவுத்தள இணைப்புகள் சூடாக இருக்கும்
ETAMIL_TEST_MYSQL நேரடி MySQL எடுத்துக்காட்டைச் சேர்க்க 1 என அமைக்கவும்

31. அடுத்த படிகள்