Knowledge

Red (programming language)

Source 📝

421:) and is therefore a highly efficient tool for dialecting (creating embedded DSLs). Red includes a dialect called Red/System, a C-level language which provides system programming facilities. Red is easy to integrate with other tools and languages as a DLL (libRed) and very lightweight (around 1 MB). It is also able to cross-compile to various platforms (see Cross Compilation section below) and create packages for platforms that require them (e.g., .APK on Android). Red also includes a fully reactive cross-platform GUI system based on an underlying reactive dataflow engine, a 2D drawing dialect comparable to SVG, compile-time and runtime macro support, and more than 40 standard datatypes. 754: 1215: 170: 373: 1569: 768: 1541: 27: 965: 912: 1603: 1115: 1273: 326:, which is capable of meta-programming with Rebol-like semantics. Red's runtime library is written in Red/System, and uses a hybrid approach: it 1658: 1608: 866: 693:
The following is the same factorial example in Red/System (in this very simple case, the source code is very similar to Red's version):
1557: 991: 1653: 1623: 1618: 1613: 1643: 1648: 1562: 1598: 350:
Red programs from any platform it supports to any other, via a command-line switch. Both Red and Red/System are distributed as
1633: 1552: 796: 393:
by its author Nenad Rakočević. In September 2011, the Red programming language was presented to a larger audience during the
366: 759: 1028:
The main feature for 0.6.4 is what we call the Simple GC (Garbage Collector). A more advanced GC is planned for the future
644:
integer very quickly. Changing that to `float!` will go farther, but these are merely to show the syntax of the language.
1293: 1266: 781: 1190: 1039: 1298: 1638: 1303: 786: 1593: 1572: 1504: 1377: 1259: 1242: 1017: 612: 1628: 1547: 1525: 1479: 1452: 1427: 1387: 791: 259:
is similar to C, but packaged into a Rebol lexical structure – for example, one would write
1519: 1422: 1392: 190: 1494: 1489: 1432: 1412: 1058: 773: 186: 90: 1437: 1333: 1316: 585: 194: 1447: 1402: 575: 491: 941: 602:(Note: Presently, Red applications are 32-bit, but it is planned to switch to 64-bit in the future.) 1484: 1367: 418: 335: 233: 229: 452:
Portability, Write once run everywhere ("That's the least expected from a programming language.")
331: 1663: 1353: 966:"Red: an imperative and functional programming language that is also a "full battery" language" 359: 218: 214: 139: 47: 43: 1282: 430: 394: 355: 351: 206: 135: 51: 39: 34: 494:
phase: Red and Red/System compilers complemented by a Red JIT-compiler, all written in Red
8: 1358: 1214: 221:
language. Its syntax and general usage overlaps that of the interpreted Rebol language.
169: 146: 68: 836: 1338: 1186: 1178: 517: 327: 397:
2011. Rakočević is a long-time Rebol developer known as the creator of the Cheyenne
1174: 637: 589: 556: 542: 538: 237: 130: 110: 1246: 913:"Interview with Nenad Rakocevic about Red, a Rebol inspired programming language" 414: 58: 347: 225: 1078: 1587: 1457: 323: 241: 97: 228:
programming language: Red can be used for extremely high-level programming (
1509: 1348: 1220: 548: 446:
Be "Green", Have a Small Footprint ("Because resources are not limitless.")
1079:"Software Freedom Day 2011: Red programming language, a new REBOL dialect" 26: 1102: 398: 386: 372: 1251: 1059:« Red Programming Language: Red at Software Freedom Day 2011 » 1417: 1182: 942:"6 Unusual & Groundbreaking Programming Languages to Learn in 2023" 464:
The following commercial applications are currently developed on Red:
1514: 1239: 343: 767: 1407: 1397: 566: 209:
designed to overcome the limitations of the programming language
119: 1132: 1040:« New Red Programming Language Gets Syllable Backend » 636:
IMPORTANT: These are intended as syntax examples. Until Red has
503:
Red currently supports the following cross-compilation targets:
213:. Red was introduced in 2011 by Nenad Rakočević, and is both an 1474: 1442: 1326: 1229: 1148: 821: 816: 641: 507: 440:
Compactness ("Being highly expressive maximizes productivity.")
358:. The runtime library is distributed under the more permissive 346:; it does its own code generation. It is therefore possible to 1234: 1382: 1372: 1343: 1321: 1225: 560: 552: 534: 527: 523: 485: 429:
The following is the list of Red's Goals as presented on the
410: 210: 182: 115: 1208: 437:
Simplicity ("An IDE should not be necessary to write code.")
338:
for cases in between, but this has not yet been implemented.
160: 1464: 579: 443:
Speed ("If too slow, it cannot be general-purpose enough.")
244:). Key to the approach is that the language has two parts: 123: 1499: 1469: 867:"Getting Started with GUI Programming using Red Language" 595: 570: 511: 484:
Initial phase: Red and Red/System compilers written in
480:
Red's development is planned to be done in two phases:
895: 893: 891: 889: 887: 409:
Red's syntax and semantics are very close to those of
224:
The implementation choices of Red intend to create a
749: 884: 670:; Giving the type of an argument in Red is optional 455:
Flexibility ("Not best but good fit for any task!")
330:what it can deduce statically and uses an embedded 1585: 1054: 1052: 1073: 1071: 16:Computer programming language released in 2011 1267: 647:The following is a factorial example in Red: 640:support, the integer example will overflow a 342:Red seeks to remain independent of any other 1049: 959: 957: 955: 1068: 1540: 1274: 1260: 1213: 1126: 1018:"0.6.4 Simple GC and Pure Red GUI Console" 1015: 459: 334:otherwise. The project roadmap includes a 168: 1281: 952: 1168: 1142: 983: 899: 371: 1604:Extensible syntax programming languages 1586: 1659:Programming languages created in 2011 1609:Domain-specific programming languages 1255: 963: 936: 934: 797:List of programming languages by type 582:Intel, console (and GUI) applications 990:Sasu, Alexandru (22 November 2018). 989: 861: 859: 857: 760:Free and open-source software portal 631: 498: 236:) as well as low-level programming ( 1221:Latest builds from official website 782:Comparison of programming languages 468:DiaGrammar — Live coded diagramming 413:. Like Rebol, it strongly supports 365:As of version 0.6.4 Red includes a 13: 1162: 1116:"The Dynamic Mapping Architecture" 931: 722:; This is compulsory in Red/System 716:; This is compulsory in Red/System 14: 1675: 1200: 1009: 854: 1654:Software using the Boost license 1624:Procedural programming languages 1619:Homoiconic programming languages 1614:High-level programming languages 1568: 1567: 1539: 787:History of programming languages 766: 752: 520:: Windows, x86, GUI applications 514:, console (and GUI) applications 376:Red Language architecture schema 25: 1644:Free compilers and interpreters 1171:Learn Red - Fundamentals of Red 1108: 1103:« What is Cheyenne? » 1096: 1033: 606: 449:Ubiquity ("Spread everywhere.") 417:and domain-specific languages ( 380: 1649:Software using the BSD license 964:Lucas, Mathis (21 July 2023). 905: 829: 809: 655:; Note: The title is optional. 475: 1: 1599:Systems programming languages 802: 792:List of programming languages 1634:Cross-platform free software 471:SmartXML — XML parsing tool. 391:Rebol & Boron conference 7: 774:Computer programming portal 745: 404: 10: 1680: 1169:Balbaert, Ivo (May 2018). 385:Red was introduced in the 1535: 1312: 1289: 1105:Last referenced Nov 2017. 626:"Hello, World!" 275: 260: 181: 176: 155: 145: 129: 109: 105: 89: 85: 77: 67: 57: 33: 24: 695: 649: 617: 424: 389:in February 2011 at the 100:) / February 19, 2024 1639:Cross-platform software 613:"Hello, World!" program 460:Commercial applications 594:Android-x86: Android, 377: 360:Boost Software License 219:functional programming 1594:Programming languages 1283:Programming languages 1065:, September 14, 2011. 375: 336:just-in-time compiler 1629:Functional languages 917:Not a Monad Tutorial 431:Software Freedom Day 395:Software Freedom Day 356:modified BSD license 352:open-source software 207:programming language 324:homoiconic language 147:Filename extensions 78:First appeared 21: 1245:2021-09-28 at the 1235:Redprogramming.com 948:. 18 October 2023. 378: 19: 1581: 1580: 1563:Non-English-based 837:"Red's changelog" 632:Factorial example 603: 499:Cross compilation 369:"the Simple GC". 367:garbage collector 238:operating systems 200: 199: 1671: 1571: 1570: 1543: 1542: 1276: 1269: 1262: 1253: 1252: 1217: 1212: 1211: 1209:Official website 1196: 1175:Packt Publishing 1156: 1146: 1140: 1130: 1124: 1123: 1122:. December 2021. 1112: 1106: 1100: 1094: 1093: 1091: 1089: 1075: 1066: 1056: 1047: 1037: 1031: 1030: 1025: 1024: 1016:lucindamichele. 1013: 1007: 1006: 1004: 1002: 987: 981: 980: 978: 976: 961: 950: 949: 938: 929: 928: 926: 924: 919:. 28 August 2015 909: 903: 897: 882: 881: 879: 877: 863: 852: 851: 849: 847: 833: 827: 826: 817:"Creator of Red" 813: 776: 771: 770: 762: 757: 756: 755: 741: 738: 735: 732: 729: 726: 723: 720: 717: 714: 711: 708: 705: 702: 699: 689: 686: 683: 680: 677: 674: 671: 668: 665: 662: 659: 656: 653: 627: 624: 621: 601: 315: 314: 311: 308: 305: 302: 299: 296: 293: 290: 287: 284: 281: 278: 273: 272: 269: 266: 263: 172: 167: 164: 162: 59:Designed by 29: 22: 18: 1679: 1678: 1674: 1673: 1672: 1670: 1669: 1668: 1584: 1583: 1582: 1577: 1531: 1308: 1285: 1280: 1247:Wayback Machine 1207: 1206: 1203: 1193: 1165: 1163:Further reading 1160: 1159: 1147: 1143: 1131: 1127: 1114: 1113: 1109: 1101: 1097: 1087: 1085: 1077: 1076: 1069: 1057: 1050: 1038: 1034: 1022: 1020: 1014: 1010: 1000: 998: 992:"Review of Red" 988: 984: 974: 972: 962: 953: 940: 939: 932: 922: 920: 911: 910: 906: 898: 885: 875: 873: 865: 864: 855: 845: 843: 835: 834: 830: 815: 814: 810: 805: 772: 765: 758: 753: 751: 748: 743: 742: 739: 736: 733: 730: 727: 724: 721: 718: 715: 712: 709: 706: 703: 700: 697: 691: 690: 687: 684: 681: 678: 675: 672: 669: 666: 663: 660: 657: 654: 651: 634: 629: 628: 625: 622: 619: 609: 501: 478: 462: 427: 415:metaprogramming 407: 383: 312: 309: 306: 303: 300: 297: 294: 291: 288: 285: 282: 279: 276: 270: 267: 264: 261: 159: 101: 73:Nenad Rakočević 63:Nenad Rakočević 17: 12: 11: 5: 1677: 1667: 1666: 1661: 1656: 1651: 1646: 1641: 1636: 1631: 1626: 1621: 1616: 1611: 1606: 1601: 1596: 1579: 1578: 1576: 1575: 1565: 1560: 1555: 1550: 1536: 1533: 1532: 1530: 1529: 1522: 1517: 1512: 1507: 1502: 1497: 1492: 1487: 1482: 1477: 1472: 1467: 1462: 1461: 1460: 1450: 1445: 1440: 1435: 1430: 1425: 1420: 1415: 1410: 1405: 1400: 1395: 1390: 1385: 1380: 1375: 1370: 1365: 1364: 1363: 1362: 1361: 1356: 1341: 1336: 1331: 1330: 1329: 1319: 1313: 1310: 1309: 1307: 1306: 1301: 1296: 1290: 1287: 1286: 1279: 1278: 1271: 1264: 1256: 1250: 1249: 1237: 1232: 1223: 1218: 1202: 1201:External links 1199: 1198: 1197: 1192:978-1789130706 1191: 1164: 1161: 1158: 1157: 1141: 1125: 1107: 1095: 1067: 1048: 1032: 1008: 982: 970:Developpez.com 951: 930: 904: 883: 853: 828: 807: 806: 804: 801: 800: 799: 794: 789: 784: 778: 777: 763: 747: 744: 696: 650: 633: 630: 618: 608: 605: 599: 598: 592: 583: 573: 564: 546: 531: 521: 515: 500: 497: 496: 495: 489: 477: 474: 473: 472: 469: 461: 458: 457: 456: 453: 450: 447: 444: 441: 438: 426: 423: 406: 403: 382: 379: 340: 339: 317: 242:device drivers 198: 197: 179: 178: 174: 173: 157: 153: 152: 149: 143: 142: 133: 127: 126: 113: 107: 106: 103: 102: 95: 93: 91:Stable release 87: 86: 83: 82: 79: 75: 74: 71: 65: 64: 61: 55: 54: 40:Multi-paradigm 37: 31: 30: 15: 9: 6: 4: 3: 2: 1676: 1665: 1664:2011 software 1662: 1660: 1657: 1655: 1652: 1650: 1647: 1645: 1642: 1640: 1637: 1635: 1632: 1630: 1627: 1625: 1622: 1620: 1617: 1615: 1612: 1610: 1607: 1605: 1602: 1600: 1597: 1595: 1592: 1591: 1589: 1574: 1566: 1564: 1561: 1559: 1556: 1554: 1551: 1549: 1546: 1538: 1537: 1534: 1528: 1527: 1523: 1521: 1518: 1516: 1513: 1511: 1508: 1506: 1503: 1501: 1498: 1496: 1493: 1491: 1488: 1486: 1483: 1481: 1478: 1476: 1473: 1471: 1468: 1466: 1463: 1459: 1458:Object Pascal 1456: 1455: 1454: 1451: 1449: 1446: 1444: 1441: 1439: 1436: 1434: 1431: 1429: 1426: 1424: 1421: 1419: 1416: 1414: 1411: 1409: 1406: 1404: 1401: 1399: 1396: 1394: 1391: 1389: 1386: 1384: 1381: 1379: 1376: 1374: 1371: 1369: 1366: 1360: 1357: 1355: 1352: 1351: 1350: 1347: 1346: 1345: 1342: 1340: 1337: 1335: 1332: 1328: 1325: 1324: 1323: 1320: 1318: 1315: 1314: 1311: 1305: 1302: 1300: 1297: 1295: 1292: 1291: 1288: 1284: 1277: 1272: 1270: 1265: 1263: 1258: 1257: 1254: 1248: 1244: 1241: 1238: 1236: 1233: 1231: 1227: 1224: 1222: 1219: 1216: 1210: 1205: 1204: 1194: 1188: 1184: 1180: 1176: 1172: 1167: 1166: 1154: 1150: 1145: 1139:, March 2020. 1138: 1134: 1129: 1121: 1117: 1111: 1104: 1099: 1084: 1080: 1074: 1072: 1064: 1060: 1055: 1053: 1045: 1041: 1036: 1029: 1019: 1012: 997: 993: 986: 971: 967: 960: 958: 956: 947: 946:makeuseof.com 943: 937: 935: 918: 914: 908: 901: 900:Balbaert 2018 896: 894: 892: 890: 888: 876:September 17, 872: 868: 862: 860: 858: 842: 838: 832: 824: 823: 818: 812: 808: 798: 795: 793: 790: 788: 785: 783: 780: 779: 775: 769: 764: 761: 750: 694: 648: 645: 643: 639: 616: 614: 604: 597: 593: 591: 587: 584: 581: 577: 574: 572: 568: 565: 562: 558: 554: 550: 547: 544: 540: 536: 532: 529: 525: 522: 519: 516: 513: 509: 506: 505: 504: 493: 490: 487: 483: 482: 481: 470: 467: 466: 465: 454: 451: 448: 445: 442: 439: 436: 435: 434: 432: 422: 420: 416: 412: 402: 400: 396: 392: 388: 374: 370: 368: 363: 361: 357: 353: 349: 348:cross-compile 345: 337: 333: 329: 325: 321: 318: 258: 255: 254: 253: 251: 247: 243: 239: 235: 231: 227: 222: 220: 216: 212: 208: 204: 196: 192: 188: 184: 180: 177:Influenced by 175: 171: 166: 158: 154: 150: 148: 144: 141: 137: 134: 132: 128: 125: 121: 117: 114: 112: 108: 104: 99: 94: 92: 88: 84: 80: 76: 72: 70: 66: 62: 60: 56: 53: 49: 45: 41: 38: 36: 32: 28: 23: 1558:Generational 1548:Alphabetical 1544: 1524: 1349:Visual Basic 1170: 1152: 1144: 1137:red-lang.org 1136: 1133:«DiaGrammar» 1128: 1119: 1110: 1098: 1086:. Retrieved 1082: 1063:red-lang.org 1062: 1043: 1035: 1027: 1021:. Retrieved 1011: 1001:February 21, 999:. Retrieved 995: 985: 973:. Retrieved 969: 945: 921:. Retrieved 916: 907: 874:. Retrieved 871:Studytonight 870: 846:February 21, 844:. Retrieved 840: 831: 820: 811: 692: 646: 635: 610: 607:Hello World! 600: 563:(hard-float) 549:Raspberry Pi 545:(soft-float) 502: 479: 463: 428: 408: 390: 384: 381:Introduction 364: 341: 319: 256: 249: 245: 223: 202: 201: 136:modified BSD 1553:Categorical 1240:Helpin' Red 1046:, May 2011. 588:: Android, 533:Linux-ARM: 510:: Windows, 476:Development 399:HTTP server 387:Netherlands 332:interpreter 304:"Hello 274:instead of 151:.red, .reds 1588:Categories 1418:JavaScript 1294:Comparison 1183:B07C5X8Q32 1153:redata.dev 1149:«SmartXML» 1088:17 January 1044:osnews.com 1023:2018-12-16 975:16 January 923:August 28, 803:References 704:factorial: 658:factorial: 354:under the 257:Red/System 246:Red/System 226:full stack 215:imperative 48:functional 44:imperative 1515:Smalltalk 996:Softpedia 492:Bootstrap 344:toolchain 163:.red-lang 69:Developer 1573:Category 1339:Assembly 1299:Timeline 1243:Archived 1120:OhioLINK 841:red-lang 746:See also 615:in Red: 405:Features 328:compiles 52:symbolic 35:Paradigm 1526:more... 1505:Scratch 1408:Haskell 1398:Fortran 1354:classic 1304:History 1083:YouTube 719:return: 701:/System 586:Android 567:FreeBSD 518:Windows 156:Website 131:License 120:Windows 96:0.6.5 ( 1545:Lists: 1480:Python 1475:Prolog 1453:Pascal 1443:MATLAB 1428:Kotlin 1388:Erlang 1327:Simula 1230:GitHub 1189:  1181:  822:GitHub 728:either 676:either 642:32-bit 638:64-bit 576:Darwin 508:MS-DOS 433:2011: 310:" 298:printf 1520:Swift 1510:Shell 1423:Julia 1393:Forth 1383:COBOL 1344:BASIC 1322:ALGOL 623:print 590:ARMv5 561:armhf 557:ARMv5 553:Linux 543:armel 539:ARMv5 535:Linux 530:, x86 528:Linux 524:Linux 486:Rebol 425:Goals 411:Rebol 322:is a 211:Rebol 205:is a 191:Scala 183:Rebol 140:Boost 116:Linux 1495:Rust 1490:Ruby 1465:Perl 1433:Lisp 1413:Java 1359:.NET 1187:ISBN 1179:ASIN 1090:2023 1003:2024 977:2023 925:2015 878:2021 848:2024 707:func 661:func 611:The 580:OS X 419:DSLs 286:> 268:> 248:and 240:and 234:GUIs 232:and 230:DSLs 217:and 187:Lisp 165:.org 138:and 124:OS X 98:Beta 81:2011 1500:SQL 1470:PHP 1438:Lua 1373:C++ 1334:APL 1317:Ada 1228:on 1226:Red 698:Red 652:Red 620:Red 596:x86 571:x86 512:x86 320:Red 313:);} 250:Red 203:Red 195:Lua 161:www 20:Red 1590:: 1448:ML 1403:Go 1378:C# 1185:. 1177:. 1173:. 1151:, 1135:, 1118:. 1081:. 1070:^ 1061:, 1051:^ 1042:, 1026:. 994:. 968:. 954:^ 944:. 933:^ 915:. 886:^ 869:. 856:^ 839:. 819:. 725:][ 673:][ 578:: 569:: 559:, 555:, 551:: 541:, 537:, 526:: 401:. 362:. 307:\n 277:if 262:if 252:. 193:, 189:, 185:, 122:, 118:, 111:OS 50:, 46:, 42:: 1485:R 1368:C 1275:e 1268:t 1261:v 1195:. 1155:. 1092:. 1005:. 979:. 927:. 902:. 880:. 850:. 825:. 740:] 737:0 734:= 731:x 713:x 710:[ 688:] 685:0 682:= 679:x 667:x 664:[ 488:2 316:. 301:( 295:{ 292:) 289:y 283:x 280:( 271:y 265:x

Index

Red Logo (stylized Tower of Hanoi)
Paradigm
Multi-paradigm
imperative
functional
symbolic
Designed by
Developer
Stable release
Beta
OS
Linux
Windows
OS X
License
modified BSD
Boost
Filename extensions
www.red-lang.org
Edit this at Wikidata
Rebol
Lisp
Scala
Lua
programming language
Rebol
imperative
functional programming
full stack
DSLs

Text is available under the Creative Commons Attribution-ShareAlike License. Additional terms may apply.