wordsinfoA

2018-11-15  本文已影响0人  Think1006

-info-begin-[These four were charmed with an old field given up to sedge, its deep rain-gullies as red as gaping wounds, its dead trees in tatters of long gray moss. Estelle became a student of flowers, Cécile of birds, Camille of trees. All my explanations were alike enchantingly strange. To their minds it had never occurred that the land sloped the same way the water ran! When told that these woods abounded in deer and wild turkey they began to look out for them at every new turn of the road. And the turns came fast. Happy miles, happy leagues; each hour was of a mellower sweetness than the last; they seemed to ripen in the sun. The only drawback was my shame of a sentimental situation, but once or twice I longed to turn the whole equipage into the woods--or the ditch. As, for instance, when three pine-woods cavalrymen had no sooner got by us than they set up that ribald old camp-song, "We're going to get married, mamma, mamma; We're going to get married, but don't tell pa--""Deserters, I don't doubt!" was my comment to the ladies. Tongue revenge is poor, but it is something.

Except in such moments, however, the war seemed farther away than it had for months and months. But about eleven o'clock we began to find the way scored by the fresh ruts of heavy wheels and the dust deepened by hundred of hoofs. The tops and faces of the roadside banks were newly trampled and torn by clambering human feet. Here was a canteen, smashed in a wheel-track; yonder a fragment of harness; here lay a broken hame, there was the half of a russet brogan and yonder a ragged sock stained and bloody.

"Why, what does all this mean?" asked Miss Harper amid her nieces' cries.

I said it meant Fisher's battery hurrying to the front. Twenty miles since five that morning was a marvel, horse artillery though they were, for, as I pointed out by many signs, their animals were in ill condition. "We shall have to go round them by neighborhood roads," I said, and presently we were deeper than ever in woodland shades and sources of girlish wonderment. The humid depths showed every sort of green and gray, their trunks, bushes and boughs, bearded with hanging moss, robed with tangled vines and chapleted with mistletoe. We seemed to have got this earth quite to ourselves and very much to our liking.

One o'clock. Miss Harper suggested a halt to feed the horses. I, knowing what it would cost me to dismount and go walking about, said no, thrice no; let us first get back upon the main road in front of that battery. On, therefore, we hurried, and soon the reality of the war was vivid to us again. In a stretch of wet road where the team had mutely begged leave to walk and the ladies had urged me to sing we had at length paused in a pebbly rivulet to allow the weary animals to drink, and the girls and the aunt and the greenwood and I were all in chorus bidding somebody "Unloose the west port and let us go free,"

when, just as our last note died among the trees one of us cried, "Listen!" and through the stillness there came from far away on our right the last three measures of a bugle sounding The March.

My eyes rested in Camille's and hers in mine. A musical license gave us the courage. At the last note our gaze did not sink but took on more glow, while out of the forest behind us a distant echo answered the last measure of the strain. Then our eyes slowly fell; and however it may have seemed to her, to me it was as if the vanished strains were not only or chiefly of bugle and echo, but as though our two hearts had called and answered in that melodious unison.

All that warm afternoon we paid the tiresome penalty of having pushed our animals too smartly at the outset. We grew sedate; sedate were the brows of the few strangers we met. We talked in pairs. When I spoke with Miss Harper the four listened. She asked about the evils of camp life; for she was one of that fine sort to whom righteousness seems every man's and woman's daily business, one of the most practical items in the world's affairs. And I said camp life was fearfully corrupting; that the merest boys cursed and swore and stole, or else were scorned as weaklings. Then I grew meekly silent and we talked in pairs again, and because I yearned to talk most with Camille I talked most with Estelle. Three times when I turned abruptly from her to Camille and called, "Hark!" the fagged-out horses halted, and as we struck our listening pose the bugle's faint sigh ever farther in our rear was but feebly proportioned to the amount of our gazing into each other's eyes.

Once, when we were not halted or harkening, we heard overmuch; heard that which brought us to an instant stand and caused even Miss Harper to gaze on me with dismayed eyes and parted lips, and the blood to go thumping through my veins. From a few hundred yards off in the northwest, beyond the far corner of an old field and the woods at its back, two gunshots together, then a third, with sharp, hot cries of alarum and command, and then another and another shot, rang out and spread wanderingly across the tender landscape.

Yet great is precept. Precept is a well. Up from its far depths by slow, humble, constant process you may draw, in a slender silver thread, and store for sudden use, the pure waters of character.

It has happened, however, that a man's own armor has been the death of him. So the moral isolation of a young prig of good red blood who is laudably trying to pump his conduct higher than his character--for that's the way he gets his character higher--has its own peculiar dangers. Take this example: that he does not dream any one will, or can, in mere frivolity, coquette, dally, play mud-pies, with a passion the sacredest in subjection, the shamefulest in mutiny, and the deepest and most perilous to tamper with, in our nature. As hotly alive in the nethermost cavern of his heart as in that of the vilest rogue there is a kennel of hounds to which one word of sophistry is as the call to the chase, and such a word I believed my companion had knowingly spoken. I was gone as wanton-tipsy as any low-flung fool, and actually fancied myself invited to be valiant by this transparent embodiment of passion whose outburst of amorous rebellion had been uttered not because I was there, but only in pure recklessness of my presence. Of course I ought to have seen that this was a soul only over-rich in woman's love; mettlesome, aspiring, but untrained to renunciation; consciously superior in mind and soul to the throng about her, and caught in some hideous gin of iron-bound--convention-bound--or even law-bound--foul play. But I was so besotted as to suggest a base analogy between us and those two sinking stars.

Unluckily she retorted with some playful parry that just lacked the saving quality of true resentment. How I rejoined would be small profit to tell. I had a fearful sense of falling; first like a wounded squirrel, dropping in fierce amazement, catching, holding on for a panting moment, then dropping, catching and dropping again, down from the top of the great tree where I had so lately sat scolding all the forest; and then, later, with an appalling passivity. And at every fresh exchange of words, while she laughed and fended, and fended and laughed, along with this passivity came a yet more appalling perversity; a passivity and perversity as of delirium, and as horrid to her as to me, though I little thought so then.

We came where a line of dense woods on our left marked the bottom-lands of Morgan's Creek. With her two earlier companions my fellow-traveller had crossed a ford here shortly after sunset, seeing no one; but a guard might easily have been put here since, by the Federals in Fayette. Pretty soon the road, bending toward it, led us down between two fenced fields and we stealthily walked our horses. Close to a way-side tree I murmured that if she would keep my horse I would steal nearer on foot and reconnoitre, and I had partly risen from the saddle, when I was thrilled by the pressure of her hand upon mine on the saddle-bow. "Don't commit the soldier's deadliest sin, my dear Mr. Smith," she said under her breath, and smiled at my agitation; "I mean, don't lose time."

I was about to put a false meaning even on that, when she added "We don't need the ford this time of year; let us ride back as if we gave up the trip--for there may be a vidette looking at us now in the edge of those bushes--and as soon as we get where we can't be seen let us take a circuit. We can cross the creek somewhere above and strike the Wiggins road up in the woods. You can find your way by the blessed stars, can't you--being the angel you are?"

My whole nature was upheaved. You may smile, but my plight was awful. In the sultry night I grew cold. My bridle-hand, still lying under her palm, turned and folded its big stupid fingers over hers. Then our hands slid apart and we rode back. "I wish I were good enough to know the stars," she said, gazing up. "Tell me some of them."

I told them. Two or three times my voice stuck in my throat, I found the sky so filled, so possessed, by constellations of evil name. At our back the Dragon writhed between the two Bears; over us hung the Eagle, and in the south were the Wolf, the Crow, the Hydra, the Serpent--"Oh, don't tell any more," she exclaimed. "Or rather--what are those three bright stars yonder? Why do you skip them?"

"Those? That one is the Virgin's sheaf; and those two are the Balances."

I failed to catch her reply. She spoke in a tone of pain and sunk her face in her hand. "Head ache?" I asked. "No." She straightened, and from under her coquettish hat bent upon me such a look as I had never seen. In her eyes, in her tightened lips, and in the lift of her head, was a whole history of hope, pride, pain, resolve, strife, bafflement and defiance. She could not have chosen to betray so much; she must have counted too fully on the shade of her hat-brim. The beautiful frown relaxed into a smile. "No," she repeated, "only an aching conscience. Ever have one?"

I averted my face and answered with a nod.

"I don't believe you! I don't believe you ever had cause for one!" She laid a hand again upon mine.

I covered it fiercely and sunk my brow upon it. And thereupon the wave of folly drew back, and on the bared sands of recollection I saw, like drowned things, my mother's face, and Gholson's and the General's, and Major Harper's, and Ned Ferry's, and Camille's. Each in turn brought its separate and peculiar pang; and among those that came a second time and with a crueler pang than before was Camille's.

"You're tired!" murmured the voice beside me, and the wave rolled in again. I lifted my brow and moved one hand from hers to make room on it for my lips, but her fingers slipped away and alighted compassionately on my neck. "You must be one ache from head to foot!" she whispered.

I turned upon her choking with anger, but her melting beauty rendered me helpless. Black woods were on our left. "Shall we turn in here?" I asked.

"Yes." She stooped low under the interlacing boughs and plunged with me into the double darkness.

About mid-afternoon I awoke from deep sleep on a bed of sand in the roasting shade of a cottonwood jungle. A corporal was shaking me and whispering "Make no noise; mount and fall in."

Round about in the stifling thicket a score of men were doing so. Lieutenant Quinn stood by, and at his side Sergeant Jim seemed to have just come among us. The place was pathless; only in two directions could one see farther than a few yards. Through one narrow opening came an intolerable glare of sunlight from a broad sheet of gliding water, while by another break in the motionless foliage could be seen in milder light, filling nearly the whole northern view, the tawny flood of the Mississippi. A stretch of the farther shore was open fields lying very low and hidden by a levee.

As we noiselessly fell into line, counting off in a whisper and rubbing from ourselves and our tortured horses the flies we were forbidden to slap, I noticed rising from close under that farther levee and some two miles upstream, a small cloud of dust coming rapidly down the hidden levee road. It seemed to be raised entirely by one or two vehicles. Behind us our own main shore was wholly concealed by this mass of cottonwoods on the sands between it and the stream, on a spit of which we stood ambushed. On the water, a hundred and fifty yards or so from the jungle, pointed obliquely across the vast current, was a large skiff with six men in it. Four were rowing with all their power, a fifth sat in the bow and the other in the stern. Quinn, in the saddle, watched through his glass the cottonwoods from which the skiff had emerged at the bottom of a sheltered bay. Now he shifted his gaze to the little whirl of dust across the river, and now he turned to smile at Jim, but his eye lighted on me instead. I risked a knowing look and motioned with my lips, "Just in time!"

"No," he murmured, "they're late; we've been waiting for them."

The sergeant's low order broke the platoon into column by file, Quinn rode toward its head with his blade drawn, and as he passed me he handed me his glass. "Here, you with no carbine, stay and watch that boat till I send for you. If there's firing, look sharp to see if any one there is hit, and who, and how hard. Watch the boat, nothing else."

He moved straight landward through the cottonwoods, followed by the men in single file, but halted them while the rear was still discernible in the green tangle. Presently they unslung carbines, and I distinctly heard galloping. It was not far beyond the cottonwoods. The Yankees were after us. Suddenly it ceased. Over yonder, shoreward in the thicket, came a sharp command and then a second, and then, right on the front of the jungle, at the water's edge, the shots began to puff and crack, and the yellow river out here around the boat to spit!--spit!--in wicked white splashes. Every second their number grew. Behind me Quinn and his men stole away. But orders are orders and I had no choice but to watch the boat. The man in the stern had his back to me, and no face among the other five did I know. They were fast getting away, but the splashes came thick and close and presently one ball found its mark. The man at the stern hurriedly changed places with an oarsman; and as the relieved rower took his new seat he turned slowly upon his face as if in mortal pain, and I saw that the fresh hand at the oar was the brother of Major Harper. Just as I made the discovery "Boom!" said my small dust-cloud across the river, and "hurry-hurry-hurry-hurry-hurry-hurry-hurry--" like a train on a trestle-work--"boom!"--a shell left its gray track in the still air over the skiff and burst in the tops of the cottonwoods. The green thicket grew pale with the bomb's white smoke, yet "crack! crack!" and "spit! spit!" persisted the blue-coats' rifles. "Boom!" said again the field-piece on yonder side the water. Its shell came rattling through the air to burst on this side, out of the flashing and cracking of rifles and the sulphurous bomb smoke arose cries of men getting mangled, and I whimpered and gnawed my lips for joy, and I watched the boat, but no second shot came aboard, and--"Boom!--hurry-hurry-hurry- hurry"--ah! the frightful skill of it! A third shell tore the cottonwoods, its smoke slowly broadened out, a Federal bugle beyond the thicket sounded the Rally, and the cracking of carbines ceased.

Now Major Harper's brother passes a word to the man at the boat's bow, whereupon this man springs up and a Confederate officer's braids flash on his sleeve as he waves to the western shore to cease firing. I still watch the boat, but I listen behind me. I hear voices of command, the Federal sergeants hurrying the troop out of the jungle and back to their horses. Then there comes a single voice, the commander's evidently; but before it can cease it is swallowed up in a low thunder of hoofs and then in a burst of cries and cheers which themselves the next moment are drowned in a rattle of carbine and pistol shots--Ferry is down on them out of hiding. Thick and silent above the din rises the dust of the turmoil, and out of all the hubbub under it I can single out the voice of the Federal captain yelling curses and orders at his panic-stricken men. And now the mêlée rolls southward, the crackle of shots grows less and then more again, and then all at once comes the crash of Quinn's platoon out of ambush, their cheer, their charge, the crackle of pistols again, and then another cheer and charge--what is that! Ferry re-formed and down on them afresh? No, it was the hard-used but gallant foe cutting their way out and getting off after all.

The skiff was touching the farther shore and the three oarsmen lifting their stricken comrade out and bearing him to the top of the levee, when Kendall came to recall me. On our way back he told me of the fight, beginning with the results: none of our own men killed outright, but four badly wounded and already started eastward in the ambulance left us by the Major's brother; some others more slightly hurt. My questions were headlong and his answers quiet; he was a slow-spoken daredevil; I wish he came more than he does into this story.

Not slow-spoken did we find the command when we reached the road where they were falling into line. After a brief but vain pursuit, here were almost the haste and tumult of the onset; the sweat of it still reeked on everyone; the ground was strewn with its wreckage and its brute and human dead, and the pools of their blood were still warm. Squarely across the middle of the road, begrimed with dust, and with a dead Federal under him and another on top, lay the big white-footed pacer. At one side the enemy's fallen wounded were being laid in the shade to be left behind. In our ranks, here was a man with an arm in a bloody handkerchief, there one with his head so bound, and yonder a young fellow jesting wildly while he let his garments be cut and a flesh-wound in his side be rudely stanched. Here there was laughter at one who had been saved by his belt-buckle, and here at one who had dropped like dead from his horse, but had caught another horse and charged on. But these details imply a delay where in fact there was none; the moment Ferry spied me he asked "Did he get across?" and while I answered he motioned me into the line. Then he changed it into a column, commanded silence, and led us across country eastward. For those few wounded who would not give up their places in the ranks it was a weary ten miles that brought us swiftly back to a point within five miles of that Clifton which we had left in the morning. And yet a lovely ten miles it was, withal. You would hardly have known this tousled crowd for the same dandy crew that had smiled so flippantly upon me at sunrise, though they smiled as flippantly now with faces powder-blackened, hair and eyelashes matted and gummed with sweat and dust, and shoulders and thighs caked with grime. Yet to Ned Ferry as well as to me--I saw it in his eye every time he looked at them--these grimy fellows did more to beautify those ten miles than did June woods beflowered and perfumed with magnolia, bay and muscadine, or than slant sunlight in glade or grove.

In a stretch of timber where we broke ranks for a short rest, unbitting but not unsaddling, a lot of fellows pressed me to tell them about the boat on the river. "You heard what was in it, didn't you?" asked one nearly as young as I.

"Besides the men? No. Same that was in the ambulance, I suppose; what was it?" Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the ‘Software’), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

"Don't you know? Oh, I remember, you were asleep when Quinn told us. Well, sir,"--he tried to speak calmly but he had to speak somehow or explode--"it was soldiers' pay--for Dick Taylor's army, over in the Trans-Mississippi; a million and a half dollars!" He was as proud to tell the news as he would have been to own the money.

GoComics: What is the most challenging part of the animation process for you?

For me it is the scheduling: the practicality of getting so much work done in a short amount of time, and the inevitable deciding of what I must let go!

GoComics: What do you envision yourself doing in five years?

It's hard to see – but I know I'll still be making animated shorts! I can't stop making them.

GoComics: How did you learn about the Short Shorts contest? Why did you decide to participate (besides the $25,000 grand prize)?

A friend of mine let me know about the contest – and the timing was just right. I was already underway storyboarding a short-form, simple piece of animation, and I felt that it could easily be made into a serialized "moving comic strip."

Lua is a proven, robust language Lua has been used in many industrial applications (e.g., Adobe's Photoshop Lightroom), with an emphasis on embedded systems (e.g., the Ginga middleware for digital TV in Brazil) and games (e.g., World of Warcraft and Angry Birds). Lua is currently the leading scripting language in games. Lua has a solid reference manual and there are several books about it. Several versions of Lua have been released and used in real applications since its creation in 1993. Lua featured in HOPL III, the Third ACM SIGPLAN History of Programming Languages Conference, in 2007. Lua won the Front Line Award 2011 from the Game Developers Magazine.

Lua is fast Lua has a deserved reputation for performance. To claim to be "as fast as Lua" is an aspiration of other scripting languages. Several benchmarks show Lua as the fastest language in the realm of interpreted scripting languages. Lua is fast not only in fine-tuned benchmark programs, but in real life too. Substantial fractions of large applications have been written in Lua.

If you need even more speed, try LuaJIT, an independent implementation of Lua using a just-in-time compiler.

Lua is portable Lua is distributed in a small package and builds out-of-the-box in all platforms that have a standard C compiler. Lua runs on all flavors of Unix and Windows, on mobile devices (running Android, iOS, BREW, Symbian, Windows Phone), on embedded microprocessors (such as ARM and Rabbit, for applications like Lego MindStorms), on IBM mainframes, etc.

For specific reasons why Lua is a good choice also for constrained devices, read this summary by Mike Pall. See also a poster created by Timm Müller.

Lua is embeddable Lua is a fast language engine with small footprint that you can embed easily into your application. Lua has a simple and well documented API that allows strong integration with code written in other languages. It is easy to extend Lua with libraries written in other languages. It is also easy to extend programs written in other languages with Lua. Lua has been used to extend programs written not only in C and C++, but also in Java, C#, Smalltalk, Fortran, Ada, Erlang, and even in other scripting languages, such as Perl and Ruby.

Lua is powerful (but simple) A fundamental concept in the design of Lua is to provide meta-mechanisms for implementing features, instead of providing a host of features directly in the language. For example, although Lua is not a pure object-oriented language, it does provide meta-mechanisms for implementing classes and inheritance. Lua's meta-mechanisms bring an economy of concepts and keep the language small, while allowing the semantics to be extended in unconventional ways.

Lua is small

O Brasil ampliou seu domínio sobre a Lua. Não o satélite, mas a linguagem de programação Lua, que surgiu no Tecgraf (Grupo de Tecnologia em Computação Gráfica, parceria da PUC-RJ com a Petrobras). Criada pelo professor Roberto Ierusalimschy junto com Waldemar Celes e Luiz Henrique de Figueiredo, a linguagem, flexível, com interface tranqüilamente combinável com C e C++ e pronta para 1.001 utilildades, desde comandos de prospecção de petróleo até scripting de jogos, ganhou faz alguns meses o livro Programming in Lua, de Roberto.

Escrito em inglês pelo autor, o volume teve uma noite de autógrafos tardia no Rio há pouco, e já ultrapassou a marca de mil exemplares vendidos (a maioria lá fora, onde a linguagem — totalmente livre e aberta — tem grande prestígio e foi até alvo de mesa-redonda da Microsoft na última Conferência Mundial de Desenvolvedores de Games).

— Minha idéia ao escrever o livro era divulgar mais e complementar a documentação sobre a Lua — contou-nos Roberto, por telefone. — O site www.lua.org tem um manual que vem junto com o pacote da linguagem, mas faltavam exemplos de uso e de como resolver determinados problemas ao trabalhar com Lua.

O interessante é que, no processo de escrever o livro, o próprio Roberto foi reformulando trechos da linguagem. No prefácio, ele escreve: "À medida que eu trabalhava no livro, de repente empacava num capítulo. (...) É quando você tenta explicar como se usa algo que acaba percebendo quão fácil é usá-lo (ou não)." Não por acaso, quando o professor começou o livro, em 1998, a linguagem Lua ainda estava na versão 3.1 e, ao terminá-lo, ela chegara à marca 5.0.

— Esta versão recauchutou o conceito de co-rotina, ou multithreading cooperativo [ em que várias linhas de comando parecem estar sendo executadas ao mesmo tempo, mas na verdade se passa dinamicamente o controle para um ou outro comando ] — explica Roberto. — Isso torna o programa mais leve e fácil de implementar. Em suma, aumenta sua portabilidade. Também foi melhorado o sistema de construção de pacotes, para fazer softwares maiores.

Ou seja: viver no mundo da Lua já não tem mistérios. Maiores informações sobre o livro podem ser obtidas com o próprio Roberto (veja contatos dele e da turma em www.lua.org/authors.html). Ele também pode ser comprado na Amazon por cerca de US$ 24. Adding Lua to an application does not bloat it. The tarball for Lua 5.3.5, which contains source code and documentation, takes 297K compressed and 1.2M uncompressed. The source contains around 24000 lines of C. Under 64-bit Linux, the Lua interpreter built with all standard Lua libraries takes 247K and the Lua library takes 421K.

Lua is free Lua is free open-source software, distributed under a very liberal license (the well-known MIT license). It may be used for any purpose, including commercial purposes, at absolutely no cost. Just download it and use it.

To learn more about Justin Hilden and his creative process on animated shorts like "Aged in the Wood" and "Oh, Possum," visit his website here.

IUP Next slides video Eric Wing (PlayControl Software) and Chris Matzenbach (Banco do Brasil Americas)

IUP is the long-lived, cross-platform native GUI widget library, developed at PUC-Rio, the same university as Lua. IUP's thoughtful design keep it lightweight and fast (because it uses native GUI widgets) and also make it easy to bind other languages, such as Lua. Adoption of IUP should be great, but the lack of Mac OS X support has hindered it. It's time to fix this and bring IUP into the modern age. This talk will reveal my efforts to implement 4 new backends for IUP: Mac (Cocoa), iOS (CocoaTouch), Android, and a native web browser backend (via Emscripten). How Much Does it Cost? slides video Roberto Ierusalimschy (PUC-Rio / Lua.org)

How much does a feature cost in a programming language? Frequently, when people propose new features for a software, the most common metric is lines of code. If a feature can be implemented in a few lines, why not add it? However, each feature has several hidden costs. Besides performance, features can have costs in documentation and testing. Some impair the conceptual integrity of the language, making it more difficult to learn. Some restrict alternative implementations. Some hinder its evolution, by narrowing unnecessarily the design space. In this talk, we will discuss these and other costs of adding features to a language, illustrating the discussion with several features already present in Lua. The Titan Programming Language slides video Hugo Gualandi (LabLua/PUC-Rio)

In this talk we present Titan, a new systems programming language that we are developing at LabLua to act as a sister language to Lua. Titan's design focuses on performance and is aimed at application development and as an alternative to some uses of C modules. Efficient Layer 7 Search of IP Address Space in LuaJIT/OpenResty slides video Robert Paprocki (Kong)

Searching Internet Protocol (IP) address space has been a long-discussed topic in the context of network-layer services, with advancements in search algorithms coming decades ago. In application-layer contexts, such searches are relegated to second-class status, commonly executing in linear time, with many assumptions made about the request context and targeted search space. In Lua/OpenResty applications in particular, existing community implementations of IP address searching typically use an unoptimized linear search pattern, presenting a CPU bottleneck in high-concurrency environments. This talk features a discussion of existing IP space search implementations, both in theory and in practice, and unveils a new model designed to execute in a highly performant nature at scale, running in logarithmic time. We demonstrate the code flow (pure LuaJIT) and discuss the performance improvements and drawbacks over existing implementations. The discussion wraps with a performance analysis of existing vs. our implementation, using real-world examples of large CIDR block lists and traffic patterns. lua-http slides video Daurnimator

What started as an experiment with the HTTP2 protocol has ended up being one of my more ambitious Lua projects. lua-http is a Lua library that offers http client and server functionality for both HTTP1, HTTP2 and websockets. It hopes to become the standard lua library for interacting with HTTP servers or clients. This talk will explore the lua-http API and demonstrate its use in a range of contexts. fengari slides video Daurnimator

fengari is the latest project to get Lua running in the browser. After running into a wall with multiple garbage collectors in lua.vm.js, fengari was born from the idea to re-use Javascript's garbage collector for a Lua VM. The core is a port of the PUC-Rio Lua 5.3 codebase to Javascript but structured to allow the JS garbage collector to analyse reachability. This talk will cover the components of fengari and how they come together to let developers write Lua for the browser just as easily as they write Javascript today. Lua in the Ceph distributed storage system slides video Noah Watkins (UC Santa Cruz)

Ceph is a massively distributed storage system offering object, file, and block abstractions, and is widely deployed within industry, academic, and scientific contexts. Lua is used within the Ceph file system to provide a mechanism for expressing load balancing policies, and within the object storage system to define dynamic transactional interfaces. This talk will provide an overview of the use of Lua within Ceph and where we would like to expand the integration. Terrain-less Procedural Generation with Lua slides video Enrique Garcia Cota (Kong)

Procedural Generation is used often to generate large amounts of content from a small(ish) set of rules. In videogames it's often applied to the generation of geographical / topological data. On this talk I would like to explore how Lua's expressiveness can be leveraged to generate other kinds of data. Measuring Lua's Performance slides video Enrique Garcia Cota (Kong)

On this talk I would like to explore the different ways there are for measuring the performance of a piece of code in Lua. We will visit common techniques and usual pitfalls, and also how the host application and the different Lua implementations influence the results. Binding to YARA with LuaJIT slides video Robert Paprocki (Kong)

YARA is a tool aimed at (but not limited to) helping malware researchers to identify and classify malware samples. It offers command line tooling for developing signatures and examining samples, as well as a C API and bindings in several languages. This talk focuses on a Lua binding for YARA via LuaJIT's FFI capabilities. We will discuss the designs of the YARA API and it's performance implications in the context of LuaJIT FFI semantics, and the engineering effort needed to work around design limitations. We discuss the Lua API our library provides, and highlight performance benefits and implementation drawbacks for various environments, including OpenResty middleware/reverse proxy environments. The discussion wraps with an examination of future points of improvement in our binding library. Lua's coroutines: the secret sauce in Nmap's Scripting Engine slides video Patrick Donnelly (Red Hat, Inc.)

The Nmap Scripting Engine (NSE) is a powerful network security tool famous for its flexibility as well as its applicability to a broad range of network reconnaissance tasks. NSE's success is made possible by the Lua programming lanuage and its most underappreciated feature: coroutines. Through coroutines, NSE allows scripters to be blissfully ignorant of the mechanics of asynchronous network communication. This talk will cover how NSE makes this possible and some of the challenges and delights in orchestrating a symphony of scripts. To type or not to type Lua slides video Andre Murbach Maidl (PUCPR)

The main goal behind Typed Lua is to help Lua programmers catch bugs during the development phase. To do that we created a type system for Lua and implemented it as a type checker that programmers can use to annotate their code and run the compiler to check their programs. After type checking the generated code is pure Lua that runs on the unmodified Lua VM. During the design of Typed Lua we tried to accommodate several Lua idioms that are familiar to programmers such as the incremental evolution of tables and filters according to run-time type tags. However, some of these design decisions had impact on the usability of Typed Lua. In this talk we will reason about some of the challenges to type Lua along with their impact on the design and usability of Typed Lua. We will also discuss the relation and the migration of Typed Lua to the Titan language. Safe browsing using Lua slides video Lourival Neto (CUJO)

CUJO is a smart firewall device designed to protect home networks. Among other features it allows users to browse websites safely on the Internet. For this, CUJO inspects HTTP(S) traffic for filtering both user's requests and website's responses. For example, it can prevent malwares from being downloaded or inappropriate content from being displayed for children (parental controls). This feature is implemented using Lunatik, that is Lua in the Linux kernel, and bindings for Netfilter/Iptables (NFLua) and for "zero-copy" memory (Luadata). In this talk we will discuss this implementation and show results on running it on thousands of active devices. Navigating the smart card world with Lua slides William Ahern

By Yuri Takhteyev Last month, the San Francisco-based Wikimedia Foundation, which maintains Wikipedia, announced that it was changing the way some of the site's more complex pages are configured. Prior to this, these pages were built using Wikipedia's own homegrown template language. Over time, however, the system proved too limiting — for example, editors had to come up with nearly a page of code just to determine the length of a piece of text. By 2011, the foundation's engineers had started looking for a better solution. One of the options was embedding the popular JavaScript language, used in most web browsers. The engineers looked especially closely at the version of JavaScript developed by Google, the Internet behemoth based in nearby Mountain View, in the heart of Silicon Valley. But they eventually looked farther afield, settling on Lua, a programming language developed by a trio of researchers in Rio de Janeiro, Brazil.

How did a programming language from the global South manage to make it into one of the world's most popular web sites? Lua's story, as it turns out, tells a lot about the globalization of software development and the difficulties faced by innovators in developing countries.

I first heard of Lua eight years ago, when I traveled to Rio de Janeiro to interview software engineers for a research project that was recently published as a book, Coding Places. While in Rio, I met "Rodrigo" (who has asked to remain anonymous), who worked on a free and open-source web platform. He surprised me by telling me that the project was based on a new programming language, Lua, developed by a small team at Pontifícia Universidade Católica do Rio de Janeiro (PUC-Rio), where Rodrigo had been a student.

I knew that PUC-Rio's computer science program was considered one of Brazil's best, and I was intrigued by the engineer's reliance on local innovation. Even so, the project sounded futile. The world of software is dominated by network effects: The more people use a piece of software, the more valuable it becomes. This is particularly true for programming languages. For engineers, going with widely used languages means access to more jobs that require knowledge of those languages and more ready-built modules in that language to repurpose. For employers, using a popular language makes it possible to hire from a larger pool of engineers. Consequently, although countless programming languages have been developed, only a handful have been widely adopted. And nearly all of those originate from major U.S.-based corporations or research centers. None that I knew at the time came from a developing country.

Against this background, Lua's chances seemed slim. So I decided to spend my time studying how local engineers applied technologies developed abroad — a situation that seemed more common in Brazil and in the developing world at large. Just to be sure, of course, I did ask a few of my Brazilian interviewees what they thought of Lua. Most had never heard of it. Those who had, knew it was something that "the guys" at PUC-Rio were working on, but conveyed little confidence that it would succeed.

My opinion of Lua changed a year later, when, back in California, I read an article about the language on a popular site for technical news. Lua, it appeared, had a small but dedicated following outside Brazil. It was being used in numerous products, most notably in the World of Warcraft, a wildly popular online game in which players could employ Lua to customize the game's user interface. I started thinking that I had perhaps missed something on my previous visit to Brazil.

I decided that I would devote a return trip to Brazil to exploring the Lua ecosystem by spending a few months working with Rodrigo on his project inside a small company in Rio. I planned to interview Lua's authors and contributors, attend Lua programmer meet-ups and other events, and find other companies using the language. The first task was relatively easy. The second two, surprisingly, were not. There just weren't any Lua events to attend, and I could find only one other company in Rio using the language. To observe Lua being used, I probably should have stayed in San Francisco. As it turned out, the language's success abroad and its relative lack thereof at home were closely related.

Software projects do not exist in a vacuum. They are usually embedded in a web of relationships, tied to other projects, people, and organizations. A project born in the right place — say, on the campus of a major corporation in the heart of Silicon Valley — can rely on such ties to rise to global prominence. JavaScript, for example, was developed in the 1990s for use in Netscape Navigator, then the world's most popular web browser. This early start made JavaScript into one of the world's most popular programming languages, despite many engineers' concerns about its poor design.

A project born in a place like Rio de Janeiro must approach its early ties more cautiously. To have a chance of success elsewhere, it must first become mobile by dislodging itself from its original context. The history of Lua was a story of such dislodging. The language was originally developed in the early 1990s as part of its authors' work at Tecgraf, a PUC-Rio consulting venture that offered services to Petrobras, Brazil's biggest oil producer. Being embedded in software destined for Petrobras was perhaps the best local starting point for Lua, as the oil company is known for its commitment to innovation. But to have a shot at global success, Lua had to disentangle itself from its early national alliances and look for friends elsewhere.

Take the decision of the language's creators to write Lua's documentation (the instructions on how to use Lua) in English. Wikimedia Foundation's engineers note Lua's excellent documentation as one of the reasons for choosing it over Google's version of JavaScript. Yet the situation is quite different for potential users of Lua in Brazil. The most popular book on Lua programming, written by one of Lua's authors, a professor at PUC-Rio, is not available in Portuguese. In fact, prior to 2007, the language had no Portuguese documentation at all, requiring Brazilian users to have strong English skills. Prioritizing Portuguese documentation would have made life a lot easier for them. It would also have greatly reduced Lua's chances of being adopted by projects such as Wikipedia.

Lua's international success was facilitated by Lua's increasing ability to fill a particular niche. Lua is especially useful for providing end users with an easy way to program the behavior of a software product without getting too far into its innards. The number of projects around the world needing such functionality is quite significant. Their number, however, is quite small in Rio, where most software projects involve building web applications, a task for which Lua was poorly suited. Rodrigo's company was seeking to mend this — his project ultimately aimed to extend Lua to web development. Until he succeeded, though, Lua was a better fit for foreign projects.

Cutting local ties is not enough, however. Global ties must be formed and exercised. For Lua, its team's integration into the international world of academic computer science provided an early start. In 1996, the team published a paper about Lua in a U.S. journal read widely by American software developers, including videogame engineers at LucasArts, who decided to integrate Lua into one their games. Thanks to LucasArts programmers, Lua soon had friends in the right places. In 1998, LucasArts engineers advocated for Lua at the Games Developer's Conference, the world's largest game development event, in San Jose, California. Quite soon, other companies were decided to incorporate the language into their products as well.

Lua's relative isolation in its early life turned into an unexpected strength. JavaScript, although widely used, is often condemned as an "ugly" language. Such ugliness is the flip side of its popularity: The language bears battle scars of the so-called browser wars of the late 1990s, when Netscape and Microsoft fought for browser market share. Yet fixing JavaScript's problems would be nearly impossible due to its ubiquity and would have required somehow correcting the myriad web browsers and websites that rely on older versions of JavaScript. Lua, in contrast, could turn its back on its past several times. In fact, seeing no commercial prospects for Lua early on, the team had decided to make the language free. It has since focused on elegance and usability.]-info-end-

上一篇下一篇

猜你喜欢

热点阅读