ഡിഫ്

കമ്പ്യൂട്ടിംഗിൽ, ഫയലുകളുടെ ഉള്ളടക്കങ്ങൾ തമ്മിലുള്ള വ്യത്യാസങ്ങൾ കണക്കാക്കുകയും പ്രദർശിപ്പിക്കുകയും ചെയ്യുന്ന ഒരു ഡാറ്റ താരതമ്യ ഉപകരണമാണ് യൂട്ടിലിറ്റി **ഡിഫ്** . മറ്റ് ആവശ്യങ്ങൾക്ക് ഉപയോഗിക്കുന്ന എഡിറ്റ് ഡിസ്റ്റൻസ് ആശയങ്ങളിൽ നിന്ന് വ്യത്യസ്തമായി, ഡിഫ് എന്നത് കെറിക്റ്റർ-ഓറിയന്റഡ് എന്നതിലുപരി ലൈൻ-ഓറിയന്റഡ് ആണെങ്കിലും ഇത് ലെവൻഷ്‌റ്റൈൻ ഡിസ്റ്റൻസ് പോലെയായതിനാൽ അതിൽ നിന്ന് ഒരു ഫയൽ മറ്റൊന്നിലേയ്ക്ക്സൃഷ്ടിക്കുന്നതിനുള്ള ഏറ്റവും ചെറിയ ഒരു കൂട്ടം ഫയലുകൾ നീക്കം ചെയ്യലുകളും കൂട്ടിച്ചേർക്കലുകളും നിർണ്ണയിക്കാൻ കഴിയുന്നു. നിരവധി ശരിയായ ഫോർമാറ്റുകളിൽ ഒന്നിൽ ഉപയുക്തത മാറ്റങ്ങൾ പ്രദർശിപ്പിക്കുന്നു. അതായത് മനുഷ്യർക്കോ കമ്പ്യൂട്ടറുകൾക്കോ മാറ്റങ്ങൾ വിശകലനം ചെയ്യാനും പാച്ചിംഗിനായി അവ ഉപയോഗിക്കാനും കഴിയും.

സാധാരണ, ഒരേ ഫയലിന്റെ രണ്ട് പതിപ്പുകൾക്കിടയിലുള്ള മാറ്റങ്ങൾ കാണിക്കാൻ ഡിഫ് ഉപയോഗിക്കുന്നു. ആധുനിക ഉപകരണങ്ങളും ബൈനറി ഫയലുകളും ഇതിനെ പിന്തുണയ്ക്കുന്നു.  ഔട്ട്‌പുട്ടിനെ "ഡിഫ്" അല്ലെങ്കിൽ ഒരു പാച്ച് എന്ന് വിളിക്കുന്നു, കാരണം ഔട്ട്‌പുട്ട് യുണിക്സ് പ്രോഗ്രാമിൽ പ്രയോഗയോഗ്യമാക്കാൻ കഴിയും. സമാന ഫയൽ താരതമ്യ യൂട്ടിലിറ്റികളുടെ ഔട്ട്പുട്ടിനെ "ഡിഫ്" എന്നും വിളിക്കുന്നു. തിരയലിന്റെ പ്രവർത്തനത്തെ വിവരിക്കുന്നതിന് " ഗ്രെപ്പ് " എന്ന വാക്ക് ഉപയോഗിക്കുന്നത് പോലെ, ഡിഫ് എന്ന വാക്ക് ഡാറ്റാ വ്യത്യാസവും അതിന്റെ ഫലങ്ങളും കണക്കാക്കുന്നതിനുള്ള ഒരു പൊതു പദമായി മാറി.   പോസിക്സ് സ്റ്റാൻഡേർഡ് "ഡിഫ്", "പാച്ച്" യൂട്ടിലിറ്റികളുടെയും അവയുടെ ഫയൽ ഫോർമാറ്റുകളുടെയും സ്വഭാവം വ്യക്തമാക്കുന്നു. 

## ചരിത്രം
ന്യൂജേഴ്‌സിയിലെ മുറെ ഹില്ലിലുള്ള ബെൽ ലാബ്‌സിൽ നിന്ന് ഉയർന്നുവന്ന യുണിക്സ് ഓപ്പറേറ്റിംഗ് സിസ്റ്റത്തിൽ 1970-കളുടെ തുടക്കത്തിൽ ഡിഫ് വികസിപ്പിച്ചെടുത്തു. 1974-ൽ യുണിക്‌സിന്റെ അഞ്ചാം പതിപ്പിനൊപ്പം പുറത്തിറക്കിയ ആദ്യ പതിപ്പ്,  എഴുതിയത് ഡഗ്ലസ് മക്‌ലോറോയും ജെയിംസ് ഹണ്ടും ചേർന്നാണ്. പ്രാരംഭ പ്രോട്ടോടൈപ്പ് ഡിഫ് വികസിപ്പിച്ച ജെയിംസുമായി ചേർന്ന് 1976-ൽ എഴുതിയ ഒരു പേപ്പറിൽ ഈ ഗവേഷണം പ്രസിദ്ധീകരിച്ചു.  ഈ പേപ്പറിൽ വിവരിച്ചിരിക്കുന്ന അൽഗോരിതം ഹണ്ട്-സിമാൻസ്കി അൽഗോരിതം എന്നറിയപ്പെടുന്നു.

സ്റ്റീവ് ജോൺസന്റെ GECOS-ലെ താരതമ്യ പ്രോഗ്രാമും മൈക്ക് ലെസ്‌കിന്റെ  പ്രൂഫ് പ്രോഗ്രാമും മക്‌ലോയ്‌യുടെ പ്രവർത്തനത്തിന് മുമ്പും സ്വാധീനവും ചെലുത്തി. പ്രൂഫ്  യുണിക്സിൽ നിന്നാണ് ഉത്ഭവിച്ചത്. കൂടാതെ  ഡിഫ് പോലെ, ലൈൻ-ബൈ-ലൈൻ മാറ്റങ്ങൾ വരുത്തുകയും പ്രോഗ്രാമിന്റെ ഔട്ട്‌പുട്ടിൽ ലൈൻ ഇൻസേർഷനുകളും ഇല്ലാതാക്കലുകളും അവതരിപ്പിക്കുന്നതിന് ആംഗിൾ-ബ്രാക്കറ്റുകൾ (">", "
This part of the
document has stayed the
same from version to
version.  It shouldn't
be shown if it doesn't
change.  Otherwise, that
would not be helping to
compress the size of the
changes.

This paragraph contains
text that is outdated.
It will be deleted in the
near future.

It is important to spell
check this dokument. On
the other hand, a
misspelled word isn't
the end of the world.
Nothing in the rest of
this paragraph needs to
be changed. Things can
be added after it.


*new*:

```text
This is an important
notice! It should
therefore be located at
the beginning of this
document!

This part of the
document has stayed the
same from version to
version.  It shouldn't
be shown if it doesn't
change.  Otherwise, that
would not be helping to
compress the size of the
changes.

It is important to spell
check this document. On
the other hand, a
misspelled word isn't
the end of the world.
Nothing in the rest of
this paragraph needs to
be changed. Things can
be added after it.

This paragraph contains
important new additions
to this document.
```


The command **<code>diff original new</code>** produces the following *normal diff output*:

ഇവിടെ, ഡിഫ് ഔട്ട്പുട്ട് വായിക്കുന്നത് എളുപ്പമാക്കുന്നതിന് നിറങ്ങൾ ഉപയോഗിച്ച് കാണിക്കുന്നു. ഡിഫ് യൂട്ടിലിറ്റി നിറമുള്ള ഔട്ട്പുട്ട് ഉണ്ടാക്കുന്നില്ല; അതിന്റെ ഔട്ട്പുട്ട് പ്ലെയിൻ ടെക്സ്റ്റ് ആണ്. എന്നിരുന്നാലും, സിന്റാക്സ് ഹൈലൈറ്റിംഗ് ഉപയോഗിച്ച് പല ടൂളുകളും  ഔട്ട്പുട്ട് വർണ്ണങ്ങൾ ഉപയോഗിച്ച് കാണിക്കാൻ കഴിയും.

ഈ സാമ്പ്രദായികമായ ഔട്ട്‌പുട്ട് ഫോർമാറ്റിൽ, a  കൂട്ടിചേർക്കുന്നതിനും, d നീക്കം ചെയ്യുന്നതിനും, c മാറ്റം വരുത്തുന്നതിനും ഉപയോഗിക്കുന്നു. ഒറിജിനൽ ഫയലിന്റെ ലൈൻ നമ്പറുകൾ a/d/c ന് മുമ്പും പുതിയ ഫയലിന്റെ നമ്പറുകൾ ശേഷവും ദൃശ്യമാകും. ചെറുതും വലുതുമായ അടയാളങ്ങൾ (ചേർക്കുന്നതോ ഇല്ലാതാക്കിയതോ മാറ്റുന്നതോ ആയ വരികളുടെ തുടക്കത്തിൽ) ഏത് ഫയലിലാണ് ലൈനുകൾ ദൃശ്യമാകുന്നതെന്ന് സൂചിപ്പിക്കുന്നു. പുതിയ ഫയലിൽ ദൃശ്യമാകുന്നതിന് കൂട്ടിച്ചേർക്കൽ വരികൾ ആദ്യത്തെ ഫയലിലേക്ക് ചേർക്കുന്നു. പുതിയ ഫയലിൽ നഷ്‌ടപ്പെട്ട ആദ്യത്തെ ഫയലുകൾ ഡിലീഷൻ ലൈനുകൾ ഇല്ലാതാക്കി.

ഡിഫോൾട്ടായി, വിവിധ പ്രോഗ്രാമുകളിലുള്ള മൂല ക്രമീകരണങ്ങളിൽ രണ്ട് ഫയലുകൾക്കും പൊതുവായ ലൈനുകൾ കാണിക്കില്ല. നീക്കിയ വരികൾ അവയുടെ പുതിയ ലൊക്കേഷനിൽ ചേർത്തതും പഴയ സ്ഥാനത്തു നിന്ന് ഇല്ലാതാക്കിയതും ആയി കാണിക്കുന്നു. എന്നിരുന്നാലും, ചില ഡിഫ് ടൂളുകൾ നീക്കിയ ലൈനുകൾ പ്രമുഖമാക്കിക്കാട്ടുന്നു.

## ഔട്ട്പുട്ട് വ്യതിയാനങ്ങൾ
### സ്ക്രിപ്റ്റ് എഡിറ്റ് ചെയ്യുക
-e ഓപ്‌ഷൻ ഉപയോഗിച്ച് ഡിഫിന്റെ ആധുനിക പതിപ്പുകളിൽ ഒരു എഡ് സ്‌ക്രിപ്റ്റ് സൃഷ്‌ടിക്കാനാകും. ഈ ഉദാഹരണത്തിനായുള്ള എഡിറ്റ് സ്ക്രിപ്റ്റ് ഇപ്രകാരമാണ്:
 24**a**
 
 *This paragraph contains*
 *important new additions*
 *to this document.*
 .
 17**c**
 *check this document. On*
 .
 11,15**d**
 0**a**
 *This is an important*
 *notice! It should*
 *therefore be located at*
 *the beginning of this*
 *document!*

ഫയലിന്റെ ഒറിജിനലിന്റെ ഉള്ളടക്കത്തെ പുതിയതായി ഉപയോഗിക്കുന്ന ഫയലിന്റെ ഉള്ളടക്കമാക്കി മാറ്റുന്നതിന്  ഈ ഡിഫ് ഫയലിലേക്ക് നമ്മൾ രണ്ട് വരികൾ കൂട്ടിച്ചേർക്കണം.
ഒരു വരിയിൽ w (write) കമാൻഡ് അടങ്ങിയിരിക്കുന്നു, കൂടാതെ ഒരു q (quit) കമാൻഡ് അടങ്ങുന്നു (e.g. by ). ഇവിടെ നമ്മൾ diff ഫയലിന് mydiff എന്ന പേര് നൽകി, നമ്മൾ ed -s original 
*** /path/to/original	timestamp
--- /path/to/new	timestamp
***************
*** 1,3 ****
--- 1,9 ----
+ This is an important
+ notice! It should
+ therefore be located at
+ the beginning of this
+ document!
+
  This part of the
  document has stayed the
  same from version to
***************
*** 8,20 ****
  compress the size of the
  changes.

- This paragraph contains
- text that is outdated.
- It will be deleted in the
- near future.

  It is important to spell
! check this dokument. On
  the other hand, a
  misspelled word isn't
  the end of the world.
--- 14,21 ----
  compress the size of the
  changes.

  It is important to spell
! check this document. On
  the other hand, a
  misspelled word isn't
  the end of the world.
***************
*** 22,24 ****
--- 23,29 ----
  this paragraph needs to
  be changed. Things can
  be added after it.
+
+ This paragraph contains
+ important new additions
+ to this document.


'ഇവിടെ, ഡിഫ് ഔട്ട്പുട്ട് വായിക്കുന്നത് എളുപ്പമാക്കുന്നതിന് നിറങ്ങൾ ഉപയോഗിച്ച് കാണിച്ചിരിക്കുന്നു. ഡിഫ് യൂട്ടിലിറ്റി നിറമുള്ള ഔട്ട്പുട്ട് ഉണ്ടാക്കുന്നില്ല; അതിന്റെ ഔട്ട്പുട്ട് പ്ലെയിൻ ടെക്സ്റ്റ് ആണ്. എന്നിരുന്നാലും, സിന്റാക്സ് ഹൈലൈറ്റിംഗ് ഉപയോഗിച്ച് പല ടൂളുകളും വർണ്ണങ്ങൾ ഉപയോഗിച്ച് ഔട്ട്പുട്ട് കാണിക്കാൻ കഴിയും.*

=== ഏകീകൃത ഫോർമാറ്റ് ===
കാൻറ്റെക്സ്റ്റ് ഫോർമാറ്റ് ഉപയോഗിച്ച് വരുത്തിയ സാങ്കേതിക മെച്ചപ്പെടുത്തലുകൾഏകീകൃത ഫോർമാറ്റിന് (അല്ലെങ്കിൽ unidiff) ഇൻഹെറിറ്റ്സ് ആയി ലഭിക്കുന്നതിലൂടെ ആസന്നമായ പഴയതും പുതിയതുമായ ടെക്‌സ്‌റ്റ് ഉപയോഗിച്ച് ചെറിയ ഡിഫ് ഉണ്ടാക്കുന്നു. ഏകീകൃത ഫോർമാറ്റ് സാധാരണയായി "-u" കമാൻഡ്-ലൈൻ ഓപ്ഷൻ ആണ് ഉപയോഗിക്കുന്നത്. 

1990 ഓഗസ്റ്റിൽ വെയ്ൻ ഡേവിസൺ ആണ് ഏകീകൃത കാൻറ്റെക്സ്റ്റ് ഡിഫ് വികസിപ്പിച്ചെടുത്തത് (comp.sources.misc ന്റെ 14-ാം വാല്യം പ്രത്യക്ഷപ്പെട്ട unidiff-ൽ). ഒരു മാസത്തിനുശേഷം റിച്ചാർഡ് സ്റ്റാൾമാൻ ഗ്നു പ്രോജക്റ്റിന്റെ ഡിഫ് യൂട്ടിലിറ്റിയിലേക്ക് ഏകീകൃത ഡിഫ് പിന്തുണ ചേർത്തു. 1991 ജനുവരിയിൽ പുറത്തിറങ്ങിയ ഗ്നു ഡിഫ് 1.15-ൽ ഈ സവിശേഷത അരങ്ങേറി. ഡിഫുകളുടെ അനിയന്ത്രിതമായ ഫോർമാറ്റിംഗ് അനുവദിക്കുന്നതിനായി ഗ്നു ഡിഫ്  കാൻറ്റെക്സ്റ്റ്  ഫോർമാറ്റിനെ സാമാന്യവൽക്കരിച്ചു.

ആദ്യത്തെ ഫയലിന് മുമ്പായി "---" ഉം പുതിയ ഫയലിന് മുമ്പായി "+++" ഉം ഉള്ളത് ഒഴികെ, കാൻറ്റെക്സ്റ്റ് ഫോർമാറ്റിന്റെ അതേ രണ്ട്-വരി തലക്കെട്ടിലാണ് ഫോർമാറ്റ് ആരംഭിക്കുന്നത്. ഫയലിലെ ലൈൻ ഡിഫ് ഉൾക്കൊള്ളുന്ന ഒന്നോ അതിലധികമോ മാറ്റ ഹങ്കുകൾ ഇതാണ്. മാറ്റമില്ലാത്ത, സന്ദർഭോചിതമായ വരികൾക്ക് മുമ്പ് ഒരു സ്പേസ് പ്രതീകവും, കൂട്ടിച്ചേർക്കൽ വരികൾക്ക് മുമ്പായി ഒരു പ്ലസ് ചിഹ്നവും, ഇല്ലാതാക്കൽ വരികൾക്ക് മുമ്പ് ഒരു മൈനസ് ചിഹ്നവും നൽകിയിരിക്കുന്നു

ഒരു ഹങ്ക് റേഞ്ച് വിവരങ്ങളോടെ ആരംഭിക്കുന്നു, അത് ഉടൻ തന്നെ വരി കൂട്ടിച്ചേർക്കലുകൾ, ലൈൻ ഇല്ലാതാക്കലുകൾ, സന്ദർഭോചിതമായ വരികൾ എന്നിവ ഉപയോഗിച്ച് പിന്തുടരുന്നു. ശ്രേണി വിവരങ്ങൾ രണ്ട് ചിഹ്നങ്ങളാൽ ചുറ്റപ്പെട്ടിരിക്കുന്നു, കൂടാതെ കാൻറ്റെക്സ്റ്റ്  ഫോർമാറ്റിൽ (മുകളിൽ) രണ്ട് വരികളിൽ ദൃശ്യമാകുന്ന ഒരൊറ്റ വരിയിലേക്ക് സംയോജിപ്പിക്കുന്നു. ശ്രേണി വിവര ലൈനിന്റെ ഫോർമാറ്റ് ഇപ്രകാരമാണ്:

@@ -l,s +l,s @@ *optional section heading''

ഹങ്ക് ശ്രേണി വിവരങ്ങളിൽ രണ്ട് ഹങ്ക് ശ്രേണികൾ അടങ്ങിയിരിക്കുന്നു. ആദ്യത്തെ ഫയലിന്റെ ഹുങ്കിന്റെ ശ്രേണിയ്‌ക്ക് മുമ്പ് ഒരു മൈനസ് ചിഹ്നവും പുതിയ ഫയലിന്റെ ശ്രേണിയ്‌ക്ക് മുമ്പായി ഒരു പ്ലസ് ചിഹ്നവുമാണ്. ഓരോ ഹങ്ക് ശ്രേണിയും ഫോർമാറ്റ് l ആണ്. ഇവിടെ l എന്നത് ആരംഭ ലൈൻ നമ്പറും s എന്നത് ഓരോ ഫയലിനും മാറ്റം വരുത്തുന്ന വരികളുടെ എണ്ണമാണ്. GNU diff-ന്റെ പല പതിപ്പുകളിലും, ഓരോ ശ്രേണിക്കും കോമയും ട്രെയിലിംഗ് മൂല്യവും ഒഴിവാക്കാനാകും. ഈ സാഹചര്യത്തിൽ s സ്ഥിരസ്ഥിതിയായി 1-ലേക്ക് മാറുന്നു. യഥാർത്ഥത്തിൽ രസകരമായ മൂല്യം ആദ്യ ശ്രേണിയുടെ l ലൈൻ നമ്പർ മാത്രമാണെന്ന കാര്യം ശ്രദ്ധിക്കുക. മറ്റെല്ലാ മൂല്യങ്ങളും ഡിഫിൽ നിന്ന് കണക്കാക്കാം.

ആദ്യത്തെ ഹങ്ക് ശ്രേണി എല്ലാ സന്ദർഭോചിതവും ഇല്ലാതാക്കലും (മാറ്റിയത് ഉൾപ്പെടെ) ഹങ്ക് ലൈനുകളുടെയും ആകെത്തുക ആയിരിക്കണം. പുതിയ ഫയലിനായുള്ള ഹങ്ക് ശ്രേണി എല്ലാ സന്ദർഭോചിതവും കൂട്ടിച്ചേർക്കലും (മാറ്റിയത് ഉൾപ്പെടെ) ഹങ്ക് ലൈനുകളുടെ ആകെത്തുകആയിരിക്കണം. ഹങ്ക് സൈസ് വിവരങ്ങൾ ഹങ്കിലെ വരികളുടെ എണ്ണവുമായി പൊരുത്തപ്പെടുന്നില്ലെങ്കിൽ, ഡിഫ് അസാധുവായി കണക്കാക്കുകയും നിരസിക്കുകയും ചെയ്യാം.

വേണമെങ്കിൽ,ഹങ്ക് റേഞ്ചിനെ തുടർന്ന് ഹുങ്ക് ഭാഗമായ വിഭാഗത്തിന്റെ അല്ലെങ്കിൽ ഫംഗ്‌ഷന്റെ തലക്കെട്ട് നൽകാം. ഡിഫ് എളുപ്പത്തിൽ വായിക്കാൻ ഇത് പ്രധാനമായും ഉപയോഗപ്രദമാണ്. ഗ്നു ഡിഫ് ഉപയോഗിച്ച് ഒരു ഡിഫ് സൃഷ്ടിക്കുമ്പോൾ, പതിവ് എക്സ്പ്രഷൻ മാച്ചിംഗ് വഴി തലക്കെട്ട് തിരിച്ചറിയുന്നു

ഒരു വരി പരിഷ്കരിച്ചാൽ, അത് ഇല്ലാതാക്കലും കൂട്ടിച്ചേർക്കലുമായി പ്രതിനിധീകരിക്കുന്നു. ആദ്യത്തെ ഫയലിന്റെയും പുതിയ ഫയലിന്റെയും ഹുങ്കുകൾ ഒരേ ഹുങ്കിൽ ദൃശ്യമാകുന്നതിനാൽ, അത്തരം മാറ്റങ്ങൾ പരസ്പരം ചേർന്ന് ദൃശ്യമാകുംചുവടെയുള്ള ഉദാഹരണത്തിൽ ഇതിന്റെ ഒരു സാധ്യത ഇതാണ്:


```
-check this dokument. On
+check this document. On
```


കമാൻഡ് `diff -u original new` ഇനിപ്പറയുന്ന ഔട്ട്പുട്ട് നിർമ്മിക്കുന്നു:


```diff
--- /path/to/original	timestamp
+++ /path/to/new	timestamp
@@ -1,3 +1,9 @@
+This is an important
+notice! It should
+therefore be located at
+the beginning of this
+document!
+
 This part of the
 document has stayed the
 same from version to
@@ -8,13 +14,8 @@
 compress the size of the
 changes.

-This paragraph contains
-text that is outdated.
-It will be deleted in the
-near future.
-
 It is important to spell
-check this dokument. On
+check this document. On
 the other hand, a
 misspelled word isn't
 the end of the world.
@@ -22,3 +23,7 @@
 this paragraph needs to
 be changed. Things can
 be added after it.
+
+This paragraph contains
+important new additions
+to this document.
```


ഇവിടെ, ഡിഫ് ഔട്ട്പുട്ട് വായിക്കുന്നത് എളുപ്പമാക്കുന്നതിന് നിറങ്ങൾ ഉപയോഗിച്ച് കാണിക്കുന്നു. ഡിഫ് യൂട്ടിലിറ്റി നിറമുള്ള ഔട്ട്പുട്ട് ഉണ്ടാക്കുന്നില്ല; അതിന്റെ ഔട്ട്പുട്ട് പ്ലെയിൻ ടെക്സ്റ്റ് ആണ്. എന്നിരുന്നാലും, പല ടൂളുകൾക്കും സിന്റാക്സ് ഹൈലൈറ്റിംഗ് ഉപയോഗിച്ച് നിറങ്ങൾ ഉപയോഗിച്ച് ഔട്ട്പുട്ട് കാണിക്കാൻ കഴിയും.

ടൈംസ്റ്റാമ്പുകളിൽ നിന്ന് ഫയൽ പേരുകൾ വിജയകരമായി വേർതിരിക്കുന്നതിന്, അവയ്ക്കിടയിലുള്ള ഡിലിമിറ്റർ ഒരു ടാബ് പ്രതീകമാണെന്നത് ശ്രദ്ധിക്കുക. ഇത് സ്‌ക്രീനിൽ അദൃശ്യമാണ്. കൺസോൾ/ടെർമിനൽ സ്‌ക്രീനുകളിൽ നിന്ന് ഡിഫുകൾ കോപ്പി/പേസ്റ്റ് ചെയ്യുമ്പോൾ നഷ്‌ടമാകും.

### വിപുലീകരണങ്ങൾ
ചില പ്രോഗ്രാമുകൾ ചില കാൻറ്റെക്സ്റ്റ്കളിലും ഉപയോഗിക്കുകയും മനസ്സിലാക്കുകയും ചെയ്യുന്ന  ചില മാറ്റം വരുത്തലുകളും വിപുലീകരണങ്ങളും ഉണ്ട്. ഉദാഹരണത്തിന്, സബ്‌വേർഷൻ പോലുള്ള ചില റിവിഷൻ കൺട്രോൾ സിസ്റ്റങ്ങൾ, ഡിഫിന്റെ ഹെഡർ വിഭാഗത്തിലെ ടൈംസ്റ്റാമ്പിന് പകരം അല്ലെങ്കിൽ അതിനുപുറമെ ഒരു പതിപ്പ് നമ്പർ, "വർക്കിംഗ് കോപ്പി" അല്ലെങ്കിൽ മറ്റേതെങ്കിലും കമെൻറ്റ് വ്യക്തമാക്കുന്നു.
 Index: path/to/file.cpp

ഒരു പുതിയ ലൈനിൽ അവസാനിക്കാത്ത ഫയലുകളുടെ പ്രത്യേക കേസ് കൈകാര്യം ചെയ്യപ്പെടുന്നില്ല. unidiff യൂട്ടിലിറ്റി അല്ലെങ്കിൽ POSIX ഡിഫ് സ്റ്റാൻഡേർഡ് ഇത്തരത്തിലുള്ള ഫയലുകൾ കൈകാര്യം ചെയ്യുന്നതിനുള്ള ഒരു മാർഗ്ഗം നിർവചിക്കുന്നില്ല. (തീർച്ചയായും, അത്തരം ഫയലുകൾ കർശനമായ POSIX നിർവചനങ്ങളാൽ "ടെക്സ്റ്റ്" ഫയലുകളല്ല.) ഒരു ഡയഗ്നോസ്റ്റിക് ആയി GNU diff ഉം git ഉം "\ ഫയലിന്റെ അവസാനത്തിൽ പുതിയ വരി ഇല്ല" (അല്ലെങ്കിൽ ഒരു വിവർത്തനം ചെയ്ത പതിപ്പ്) നിർമ്മിക്കുന്നു, എന്നാൽ ഈ സ്വഭാവം പോർട്ടബിൾ അല്ല. GNU പാച്ച് ഈ കേസ് കൈകാര്യം ചെയ്യുന്നതായി തോന്നുന്നില്ല, അതേസമയം git-apply ചെയ്യുന്നു.

പാച്ച് പ്രോഗ്രാം നടപ്പാക്കൽ-നിർദ്ദിഷ്ട ഡിഫ് ഔട്ട്പുട്ട് തിരിച്ചറിയണമെന്നില്ല. എന്നിരുന്നാലും, GNU പാച്ച്, git പാച്ചുകൾ തിരിച്ചറിയാനും അല്പം വ്യത്യസ്തമായി പ്രവർത്തിക്കാനും അറിയപ്പെടുന്നു.

## നടപ്പാക്കലുകളും അനുബന്ധ പ്രോഗ്രാമുകളും
1975 മുതലുള്ള മാറ്റങ്ങളിൽ കോർ അൽഗോരിതം മെച്ചപ്പെടുത്തൽ, കമാൻഡിൽ ഉപയോഗപ്രദമായ സവിശേഷതകൾ കൂട്ടിച്ചേർക്കൽ, പുതിയ ഔട്ട്പുട്ട് ഫോർമാറ്റുകളുടെ രൂപകൽപ്പന എന്നിവ ഉൾപ്പെടുന്നു. യൂജിൻ ഡബ്ല്യു. മിയേഴ്‌സ്രചിച്ച ആൻ ഒ(എൻഡി) ഡിഫറൻസ് അൽഗോരിതം, അതിന്റെ വ്യതിയാനങ്ങൾ എന്നീ പേപ്പറുകളിലും വെബ് മില്ലറുടെയും മിയേഴ്‌സിന്റെയും എ ഫയൽ കംപാരിസൺ പ്രോഗ്രാമിലും അടിസ്ഥാന അൽഗോരിതം വിവരിച്ചിട്ടുണ്ട്. ഈ അൽഗോരിതം സ്വതന്ത്രമായി കണ്ടെത്തുകയും ഏകദേശ സ്ട്രിംഗ് മാച്ചിംഗിനുള്ള അൽഗോരിതങ്ങളിൽ വിവരിക്കുകയും ചെയ്തത് എസ്കോ ഉക്കോണൻ ആണ്.ഡിഫ് പ്രോഗ്രാമിന്റെ ആദ്യ പതിപ്പുകൾ ടെക്‌സ്‌റ്റ് ഫയലുകളുടെ ലൈൻ താരതമ്യങ്ങൾക്കായി രൂപകൽപ്പന ചെയ്‌തതാണ്. പുതിയ ലൈൻ പ്രതീകം ലൈനുകൾ ഡിലിമിറ്റ് ചെയ്യുമെന്ന് പ്രതീക്ഷിക്കുന്നു. 1980-കളോടെ, ബൈനറി ഫയലുകൾക്കുള്ള പിന്തുണ ആപ്ലിക്കേഷന്റെ രൂപകല്പനയിലും നടപ്പാക്കലിലും ഒരു മാറ്റത്തിന് കാരണമായി.

GNU diff ഉം diff3 ഉം diffutils പാക്കേജിൽ മറ്റ് ഡിഫ്, പാച്ച് അനുബന്ധ യൂട്ടിലിറ്റികൾ എന്നിവയിൽ ഉൾപ്പെടുത്തിയിട്ടുണ്ട്.
## ഫോർമാറ്ററുകളും ഫ്രണ്ട് എൻഡുകളും
പോസ്റ്റ്‌പ്രൊസസ്സറുകൾ sdiff, diffmk എന്നിവ യഥാക്രമം വശങ്ങളിലായി വ്യത്യസ്‌ത ലിസ്റ്റിംഗുകൾ റെൻഡർ ചെയ്യുകയും പ്രിന്റ് ചെയ്‌ത പ്രമാണങ്ങളിൽ മാറ്റം വരുത്തുകയും ചെയ്യുന്നു. രണ്ടും 1981-നോ അതിനുമുമ്പോ ബെൽ ലാബിൽ മറ്റൊരിടത്ത് വികസിപ്പിച്ചെടുത്തു.

രണ്ട് ഡിഫുകൾ അനുരഞ്ജനം ചെയ്തുകൊണ്ട് Diff3 ഒരു ഫയലിനെ മറ്റ് രണ്ട് ഫയലുകളുമായി താരതമ്യം ചെയ്യുന്നു. ഒരു പൊതു ഉറവിടം എഡിറ്റുചെയ്യുന്ന രണ്ട് ആളുകൾ വരുത്തിയ മാറ്റങ്ങൾ അനുരഞ്ജിപ്പിക്കുന്നതിന് പോൾ ജെൻസൻ ആണ് ഇത് ആദ്യം വിഭാവനം ചെയ്തത്. റിവിഷൻ കൺട്രോൾ സിസ്റ്റങ്ങളും ഇത് ഉപയോഗിക്കുന്നു, ഉദാ. RCS, ലയിപ്പിക്കുന്നതിനായി.

ഒരു യൂസർ ഇന്റർഫേസിൽ ഒരു പാച്ച് നൽകുന്ന മാറ്റങ്ങൾ കാണിക്കുന്നതിന് Emacs-ൽ Ediff ഉണ്ട്.. പാച്ച് ഫയലുകൾക്കായി ഇന്ററാക്ടീവ് എഡിറ്റിംഗും ലയന ശേഷികളും സംയോജിപ്പിക്കുന്നു.

രണ്ട് മുതൽ എട്ട് വരെയുള്ള ഫയലുകൾ താരതമ്യം ചെയ്യാൻ Vim vimdiff നൽകുന്നു. ഡിഫ് നിറത്തിൽ എടുത്തുകാണിക്കുന്നു.ചരിത്രപരമായി ഡിഫ് പ്രോഗ്രാമിന്റെ സഹായം വേണ്ടി വരുമ്പോൾ, ആധുനിക വിം ജിറ്റിന്റെ ഫോർക്ക് ഓഫ് xdiff ലൈബ്രറി (LibXDiff) കോഡ് ഉപയോഗിക്കുന്നു, ഇത് മെച്ചപ്പെട്ട വേഗതയും പ്രവർത്തനക്ഷമതയും നൽകുന്നു.

GNU Wdiff എന്നത് ഒരു ഫ്രണ്ട് എൻഡ് ആണ്. വേഡ്-റാപ്പിങ്ങിന്റെയോ വ്യത്യസ്ത നിരയുടെ വീതിയുടെയോ സാന്നിധ്യത്തിൽ പോലും ലിഖിത ഭാഷയുടെ ഒരു ടെക്സ്റ്റ് ഡോക്യുമെന്റിൽ മാറിയ വാക്കുകളോ ശൈലികളോ ഇത് കാണിക്കുന്നു.

കളർഡിഫ് എന്നത് 'ഡിഫ്' എന്നതിനുള്ള ഒരു പേൾ റാപ്പറാണ്, ഇത് ഒരേ ഔട്ട്‌പുട്ട് ഉത്പാദിപ്പിക്കുന്നു, എന്നാൽ ചേർത്തതും ഇല്ലാതാക്കിയതുമായ ബിറ്റുകൾക്ക് കളറൈസേഷൻ നൽകുന്നു. ഡിഫ്-സോ-ഫാൻസി, ഡിഫ്-ഹൈലൈറ്റ് എന്നിവ പുതിയ അനലോഗുകളാണ്. "delta" എന്നത് ഒരു റസ്റ്റ് റീറൈറ്റാണ്, അത് ഒരേ സമയം മാറ്റങ്ങളും അടിസ്ഥാന കോഡും എടുത്തുകാണിക്കുന്നു.

കാൻറ്റെക്സ്റ്റ് ഡിഫുകളും  ഏകീകൃത ഡിഫുകളും സംയോജിപ്പിക്കുകയും പുനഃക്രമീകരിക്കുകയും താരതമ്യം ചെയ്യുകയും പരിഹരിക്കുകയും ചെയ്യുന്ന ടൂളുകൾ പാച്ചുടിൽസിൽ അടങ്ങിയിരിക്കുന്നു.
### അൽഗോരിതമിക് ഡെറിവേറ്റീവുകൾ
## References

## Further reading
*A technique for isolating differences between files
*A generic implementation of the Myers SES/LCS algorithm with the Hirschberg linear space refinement (C source code)
## External links

*
* 
* 
*
*JavaScript Implementation 

വർഗ്ഗം:ഔപചാരിക ഭാഷകൾ